mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 06:53:13 -06:00
Compare commits
29 Commits
v3.3.0-dev
...
v3.3.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
faaba69554 | ||
|
|
0395bba4f5 | ||
|
|
14ac7a917b | ||
|
|
7a209d4053 | ||
|
|
7e5b140c2f | ||
|
|
1f1952fb19 | ||
|
|
229bdaa308 | ||
|
|
5c0894b8c1 | ||
|
|
9cefcfb0bc | ||
|
|
5d34a5c5d5 | ||
|
|
f8c800e527 | ||
|
|
b90e4d932a | ||
|
|
5457a7e7fd | ||
|
|
8f5cc510ee | ||
|
|
0475f5e853 | ||
|
|
5b7dee0689 | ||
|
|
6532f61747 | ||
|
|
4bdae4eccb | ||
|
|
efb9840b86 | ||
|
|
308a11cb32 | ||
|
|
3a7421de33 | ||
|
|
21a58397b6 | ||
|
|
9ae61806dc | ||
|
|
87ac6f07f8 | ||
|
|
1cd5313259 | ||
|
|
04c1ff04ac | ||
|
|
0e1a0afa2c | ||
|
|
5227bb68b5 | ||
|
|
fb68941768 |
11
.github/pull_request_template.md
vendored
Normal file
11
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
<!--
|
||||
BEFORE YOU CREATE A PULL REQUEST:
|
||||
|
||||
- Please base all pull requests against the dev branch
|
||||
- Include a clear description of your change
|
||||
- Reference related Issue(s) (e.g., "Resolves Issue #123")
|
||||
|
||||
Thank you for contributing to RomWBW! I will review your pull request as soon as possible.
|
||||
|
||||
DELETE EVERYTHING IN THIS COMMENT BLOCK AND REPLACE WITH YOUR COMMENTS
|
||||
-->
|
||||
BIN
Doc/Aztec_C_1.06_User_Manual_Mar84.pdf
Normal file
BIN
Doc/Aztec_C_1.06_User_Manual_Mar84.pdf
Normal file
Binary file not shown.
@@ -11,6 +11,11 @@ Version 3.3
|
||||
- WBW: Support for PPA Zip Drive on PPI interface (much inspiration from Alan Cox)
|
||||
- WBW: Support for SyQuest SparQ Drive on PPI interface (much inspiration from Alan Cox)
|
||||
- WBW: Support for ATAPI Disk Drives (not CD-ROMs) on IDE and PPIDE interfaces
|
||||
- R?P: Added new disk images: Aztec C, MS BASIC Compiler, MS Fortran, Games, HiTech-C, Turbo Pascal, SLR Z80ASM
|
||||
- JBL: Added RCZ80 configuration for ColecoVision
|
||||
- WBW: Support for Z180 running interrupt mode 1
|
||||
- WBW: Preliminary support for S100 Computers Z180
|
||||
- WBW: Preliminary support for Dan Werner's ESP32 MBC Module
|
||||
|
||||
Version 3.2.1
|
||||
-------------
|
||||
|
||||
11351
Doc/HI-TECH Z80 C Compiler Manual.txt
Normal file
11351
Doc/HI-TECH Z80 C Compiler Manual.txt
Normal file
File diff suppressed because it is too large
Load Diff
4090
Doc/Microsoft_FORTRAN-80_Users_Manual_1977.pdf
Normal file
4090
Doc/Microsoft_FORTRAN-80_Users_Manual_1977.pdf
Normal file
File diff suppressed because one or more lines are too long
@@ -6,8 +6,8 @@
|
||||
*** ***
|
||||
***********************************************************************
|
||||
|
||||
This directory ("Doc") is part of the RomWBW System Software
|
||||
distribution archive. It contains documentation for components of
|
||||
This directory ("Doc") is part of the RomWBW System Software
|
||||
distribution archive. It contains documentation for components of
|
||||
the system.
|
||||
|
||||
ChangeLog.txt
|
||||
@@ -34,9 +34,9 @@ ROM Applications documents.
|
||||
CPM Manual ("CPM Manual.pdf")
|
||||
-----------------------------
|
||||
|
||||
The original DRI CP/M 2.x Operating System Manual. This should be
|
||||
considered the primary reference for system operation. The section
|
||||
on CP/M 2 Alteration can be ignored since this work has already been
|
||||
The original DRI CP/M 2.x Operating System Manual. This should be
|
||||
considered the primary reference for system operation. The section
|
||||
on CP/M 2 Alteration can be ignored since this work has already been
|
||||
completed as part of the RomWBW distribution.
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ Manual for the DDTZ v2.7 debug tool included on the ROM drive.
|
||||
FDisk Manual ("FDisk Manual.pdf")
|
||||
---------------------------------
|
||||
|
||||
The operational manual for John Coffman's hard disk partitioning
|
||||
The operational manual for John Coffman's hard disk partitioning
|
||||
program. This program is included in RomWBW as FDISK80.
|
||||
|
||||
|
||||
@@ -78,9 +78,9 @@ NZCOM operating system operation manual.
|
||||
ZCPR Manual ("ZCPR Manual.pdf")
|
||||
-------------------------------
|
||||
|
||||
ZCPR is the command proccessor portion of Z-System. This is the
|
||||
manual for ZCPR 1.x as included in RomWBW. The installation
|
||||
instructions can be ignored since that work has already been
|
||||
ZCPR is the command proccessor portion of Z-System. This is the
|
||||
manual for ZCPR 1.x as included in RomWBW. The installation
|
||||
instructions can be ignored since that work has already been
|
||||
completed as part of the RomWBW distribution.
|
||||
|
||||
ZCPR D&J Manual ("ZCPR-DJ.doc")
|
||||
@@ -92,9 +92,9 @@ ZCPR D&J User Manual. This manual supplements the ZCPR Manual.
|
||||
ZSDOS Manual ("ZSDOS Manual.pdf")
|
||||
---------------------------------
|
||||
|
||||
ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
|
||||
1.x as included in RomWBW. The installation instructions can be
|
||||
ignored since that work has already been completed as part of the
|
||||
ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
|
||||
1.x as included in RomWBW. The installation instructions can be
|
||||
ignored since that work has already been completed as part of the
|
||||
RomWBW distribution.
|
||||
|
||||
Microsoft Basic-80 Reference Manual v5.0 (Microsoft Basic-80 Reference Manual v5.0.pdf)
|
||||
@@ -110,7 +110,6 @@ QP/M 2.7 Features and Facilities ("qcp27.pdf")
|
||||
|
||||
Official documentation set for QP/M 2.7 from original QP/M distribution.
|
||||
|
||||
|
||||
SIO+CTC Baud Rate Options (SIO+CTC Baud Rate Options.pdf)
|
||||
---------------------------------------------------------
|
||||
|
||||
@@ -133,4 +132,37 @@ UCSD p-System Users Manual ("UCSD p-System Users Manual.pdf")
|
||||
Official user manual for p-System operating system included with
|
||||
RomWBW.
|
||||
|
||||
--WBW 5:18 PM 3/16/2023
|
||||
|
||||
Z80 Assembler User Manual (z80asm (SLR Systems).pdf)
|
||||
----------------------------------------------------
|
||||
|
||||
Official user manual for the Z80 Macro Assembler by SLR Systems
|
||||
included in the z80asm disk image.
|
||||
|
||||
|
||||
HI-TECH C Compiler User Manual (HI-TECH Z80 C Compiler Manual.txt)
|
||||
------------------------------------------------------------------
|
||||
|
||||
Official user manual for the HI-TECH C Compiler included in the
|
||||
hitechc disk image.
|
||||
|
||||
|
||||
Borland TurboPascal User Manual (Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf)
|
||||
------------------------------------------------------------------------------------
|
||||
|
||||
Official user manual Borland TurboPascal included in the pascal disk image.
|
||||
|
||||
|
||||
Aztec C Compiler User Manual (Aztec_C_1.06_User_Manual_Mar84.pdf)
|
||||
-----------------------------------------------------------------
|
||||
|
||||
Official user manual for the Aztec C Compiler included in the aztecc disk image.
|
||||
|
||||
|
||||
FORTRAN-80 User Manual (Microsoft_FORTRAN-80_Users_Manual_1977.pdf)
|
||||
---------------------------------------------------------------
|
||||
|
||||
Official user manual for Microsoft's FORTRAN-80 compiler included in the fortran
|
||||
disk image.
|
||||
|
||||
--WBW 5:18 PM 6/14/2023
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
49495
Doc/Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf
Normal file
49495
Doc/Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Doc/z80asm (SLR Systems).pdf
Normal file
BIN
Doc/z80asm (SLR Systems).pdf
Normal file
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.3 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
06 Jun 2023
|
||||
07 Jul 2023
|
||||
|
||||
# Overview
|
||||
|
||||
@@ -183,6 +183,10 @@ let me know if I missed you!
|
||||
|
||||
- The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
- Rob Prouse has created many of the supplemental disk images including
|
||||
Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler,
|
||||
Microsoft Fortran Compiler, and a Games compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
06 Jun 2023
|
||||
07 Jul 2023
|
||||
|
||||
|
||||
|
||||
@@ -185,6 +185,10 @@ let me know if I missed you!
|
||||
|
||||
- The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
- Rob Prouse has created many of the supplemental disk images
|
||||
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
|
||||
BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
|
||||
|
||||
@@ -629,6 +629,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
|
||||
;
|
||||
.DB 13, $A0, $A1, $A0, $FF, $A2 ; MBC
|
||||
.DW HWSTR_MBC
|
||||
;
|
||||
.DB 17, $A0, $A1, $A0, $FF, $A2 ; DUODYNE
|
||||
.DW HWSTR_DUO
|
||||
;
|
||||
.DB $FF ; END OF TABLE MARKER
|
||||
;
|
||||
@@ -682,6 +685,7 @@ HWSTR_RCEB6 .DB "RCBus Sound Module (EBv6)",0
|
||||
HWSTR_RCMF .DB "RCBus Sound Module (MF)",0
|
||||
HWSTR_LINC .DB "Z50 LiNC Sound Module",0
|
||||
HWSTR_MBC .DB "NHYODYNE Sound Module",0
|
||||
HWSTR_DUO .DB "DUODYNE Sound Module",0
|
||||
|
||||
MSGUNSUP .db "MYM files not supported with HBIOS yet!\r\n", 0
|
||||
|
||||
|
||||
@@ -30,11 +30,11 @@
|
||||
; 2021-12-06 [WBW] Fix inverted ROM/RAM DPB mapping in buffer alloc
|
||||
; 2022-02-28 [WBW] Use HBIOS to swap banks under CP/M 3
|
||||
; Use CPM3 BDOS direct BIOS call to get DRVTBL adr
|
||||
; 2023-06-19 [WBW] Update for revised DIODEVICE API
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
; 1) Do something to prevent assigning slices when device does not support them
|
||||
; 2) ASSIGN C: causes drive map to be reinstalled unnecessarily
|
||||
; 1) ASSIGN C: causes drive map to be reinstalled unnecessarily
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
;===============================================================================
|
||||
@@ -1405,12 +1405,11 @@ chkdev: ; HBIOS variant
|
||||
; get device/unit info
|
||||
ld b,$17 ; hbios func: diodevice
|
||||
ld c,a ; unit to C
|
||||
rst 08 ; call hbios, D := device, E := unit
|
||||
ld a,d ; device to A
|
||||
rst 08 ; call hbios, C := device attributes
|
||||
;
|
||||
; check slice support
|
||||
cp $30 ; A has device/unit, in hard disk range?
|
||||
jr c,chkdev1 ; if not hard disk, check slice val
|
||||
bit 5,c ; high capacity device?
|
||||
jr z,chkdev1 ; if not high cap, check slice val
|
||||
xor a ; otherwise, signal OK
|
||||
ret
|
||||
;
|
||||
@@ -1943,10 +1942,10 @@ stack .equ $ ; stack top
|
||||
; Messages
|
||||
;
|
||||
indent .db " ",0
|
||||
msgban1 .db "ASSIGN v1.5 for RomWBW CP/M ",0
|
||||
msgban1 .db "ASSIGN v1.6 for RomWBW CP/M ",0
|
||||
msg22 .db "2.2",0
|
||||
msg3 .db "3",0
|
||||
msbban2 .db ", 28-Feb-2022",0
|
||||
msbban2 .db ", 16-Jun-2023",0
|
||||
msghb .db " (HBIOS Mode)",0
|
||||
msgub .db " (UBIOS Mode)",0
|
||||
msgban3 .db "Copyright 2021, Wayne Warthen, GNU GPL v3",0
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
;
|
||||
;[2022/03/27] v1.8 Support RHYOPHYRE
|
||||
;
|
||||
;[2023/07/07] v1.9 Support DUODYNE
|
||||
;
|
||||
; Constants
|
||||
;
|
||||
mask_data .EQU %10000000 ; RTC data line
|
||||
@@ -49,6 +51,7 @@ PORT_DYNO .EQU $0C ; RTC port for DYNO
|
||||
PORT_RCZ280 .EQU $C0 ; RTC port for RCZ280
|
||||
PORT_MBC .EQU $70 ; RTC port for MBC
|
||||
PORT_RPH .EQU $84 ; RTC port for RHYOPHYRE
|
||||
PORT_DUO .EQU $70 ; RTC port for DUODYNE
|
||||
|
||||
|
||||
BDOS .EQU 5 ; BDOS invocation vector
|
||||
@@ -1079,61 +1082,66 @@ HINIT:
|
||||
LD C,PORT_SBC
|
||||
LD DE,PLT_SBC
|
||||
CP $01 ; SBC
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
CP $02 ; ZETA
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
CP $03 ; ZETA 2
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_N8
|
||||
LD DE,PLT_N8
|
||||
CP $04 ; N8
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_MK4
|
||||
LD DE,PLT_MK4
|
||||
CP $05 ; Mark IV
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RCZ80
|
||||
LD DE,PLT_RCZ80
|
||||
CP $07 ; RCBus w/ Z80
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RCZ180
|
||||
LD DE,PLT_RCZ180
|
||||
CP $08 ; RCBus w/ Z180
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_EZZ80
|
||||
LD DE,PLT_EZZ80
|
||||
CP $09 ; Easy Z80
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_SCZ180
|
||||
LD DE,PLT_SCZ180
|
||||
CP $0A ; SCZ180
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_DYNO
|
||||
LD DE,PLT_DYNO
|
||||
CP 11 ; DYNO
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RCZ280
|
||||
LD DE,PLT_RCZ280
|
||||
CP 12 ; RCZ280
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_MBC
|
||||
LD DE,PLT_MBC
|
||||
CP 13 ; MBC
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RPH
|
||||
LD DE,PLT_RPH
|
||||
CP 14 ; RHYOPHYRE
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_DUO
|
||||
LD DE,PLT_DUO
|
||||
CP 13 ; DUODYNE
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
; Unknown platform
|
||||
LD DE,PLTERR ; BIOS error message
|
||||
@@ -1630,7 +1638,7 @@ TESTING_BIT_DELAY_OVER:
|
||||
|
||||
RTC_HELP_MSG:
|
||||
.DB 0Ah, 0Dh ; line feed and carriage return
|
||||
.TEXT "RTC: Version 1.8"
|
||||
.TEXT "RTC: Version 1.9"
|
||||
.DB 0Ah, 0Dh ; line feed and carriage return
|
||||
.TEXT "Commands: E)xit T)ime st(A)rt S)et R)aw L)oop C)harge N)ocharge D)elay I)nit G)et P)ut B)oot W)arm-start H)elp"
|
||||
.DB 0Ah, 0Dh ; line feed and carriage return
|
||||
@@ -1760,6 +1768,7 @@ PLT_DYNO .TEXT ", DYNO RTC Module Latch Port 0x0C\r\n$"
|
||||
PLT_RCZ280 .TEXT ", RCBus Z280 RTC Module Latch Port 0xC0\r\n$"
|
||||
PLT_MBC .TEXT ", MBC RTC Latch Port 0x70\r\n$"
|
||||
PLT_RPH .TEXT ", RHYOPHYRE RTC Latch Port 0x84\r\n$"
|
||||
PLT_DUO .TEXT ", DUODYNE RTC Latch Port 0x70\r\n$"
|
||||
|
||||
;
|
||||
; Generic FOR-NEXT loop algorithm
|
||||
|
||||
@@ -2291,8 +2291,8 @@ INIT2:
|
||||
LD C,(HL) ; PUT UNIT NUM IN C
|
||||
RST 08 ; CALL HBIOS
|
||||
LD A,C ; GET ATTRIBUTES
|
||||
AND %00111000 ; ISOLATE TYPE BITS
|
||||
CP %00101000 ; TYPE = RAM?
|
||||
AND %10001111 ; ISOLATE TYPE BITS
|
||||
CP %00000101 ; NOT FLOPPY, TYPE = RAM?
|
||||
JR NZ,INIT2X ; IF NOT THEN DONE
|
||||
;
|
||||
; CHECK IF SECOND UNIT IS ROM OR FLASH
|
||||
@@ -2303,10 +2303,10 @@ INIT2:
|
||||
LD C,(HL) ; PUT UNIT NUM IN C
|
||||
RST 08 ; CALL HBIOS
|
||||
LD A,C ; GET ATTRIBUTES
|
||||
AND %00111000 ; ISOLATE TYPE BITS
|
||||
CP %00100000 ; TYPE = ROM?
|
||||
AND %10001111 ; ISOLATE TYPE BITS
|
||||
CP %00000100 ; NOT FLOPPY, TYPE = ROM?
|
||||
JR Z,INIT2A ; IF SO, ADJUST DEF DRIVE
|
||||
CP %00111000 ; TYPE = FLASH?
|
||||
CP %00000111 ; NOT FLOPPY, TYPE = FLASH?
|
||||
JR NZ,INIT2X ; IF NOT THEN DONE
|
||||
;
|
||||
INIT2A:
|
||||
@@ -2904,61 +2904,51 @@ DRV_INIT:
|
||||
LD HL,DRVLST ; INIT HL PTR TO DRIVE LIST
|
||||
;
|
||||
DRV_INIT2:
|
||||
PUSH BC ; SAVE LOOP CNT & UNIT
|
||||
CALL DRV_INIT3 ; CHECK DRIVE
|
||||
POP BC ; RECOVER LOOP CNT & UNIT
|
||||
INC C ; NEXT UNIT
|
||||
DJNZ DRV_INIT2 ; LOOP
|
||||
LD A,D ; TOTAL DEVICE COUNT TO D
|
||||
LD A,D ; TOTAL DEVICE COUNT TO A
|
||||
LD (DRVLSTC),A ; SAVE THE COUNT
|
||||
JR DRV_INIT4 ; CONTINUE
|
||||
;
|
||||
DRV_INIT3:
|
||||
; GET DEVICE ATTRIBUTES
|
||||
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER)
|
||||
PUSH HL ; SAVE DRIVE LIST PTR
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
|
||||
RST 08 ; CALL HBIOS, UNIT TO C
|
||||
LD A,D ; DEVICE TYPE TO A
|
||||
LD A,C ; DEVICE ATTRIBUTES TO A
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
POP HL ; RESTORE DRIVE LIST PTR
|
||||
POP DE ; RESTORE DE
|
||||
CP DIODEV_IDE ; HARD DISK DEVICE?
|
||||
JR NC,DRV_INIT3A ; IF SO, HANDLE SPECIAL
|
||||
LD (HL),C ; SAVE UNIT NUM IN LIST
|
||||
INC HL ; BUMP PTR
|
||||
INC D ; INC TOTAL DEVICE COUNT
|
||||
RET
|
||||
LD B,A ; ATTRIBUTES TO B
|
||||
;
|
||||
DRV_INIT3A:
|
||||
; CHECK FOR HARD DISK REMOVABLE CARTRIDGE DRIVES
|
||||
CP DIODEV_PPA ; PPA (ZIP DRIVE) IS REMOVABLE
|
||||
JR Z,DRV_INIT3B ; IF SO, SKIP MEDIA CHECK
|
||||
CP DIODEV_IMM ; IMM (ZIP DRIVE) IS REMOVABLE
|
||||
JR Z,DRV_INIT3B ; IF SO, SKIP MEDIA CHECK
|
||||
CP DIODEV_SYQ ; IMM (ZIP DRIVE) IS REMOVABLE
|
||||
JR Z,DRV_INIT3B ; IF SO, SKIP MEDIA CHECK
|
||||
|
||||
; CHECK FOR ACTIVE AND RETURN IF NOT
|
||||
; IF DEVICE IS NOT REMOVABLE, THEN CHECK TO ENSURE IT IS
|
||||
; ACTUALLY ONLINE. IF NOT, SKIP UNIT ENTIRELY.
|
||||
BIT 6,B ; REMOVABLE?
|
||||
JR NZ,DRV_INIT3A ; IF SO, SKIP MEDIA CHECK
|
||||
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER)
|
||||
PUSH HL ; SAVE DRIVE LIST PTR
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
|
||||
LD B,BF_DIOMEDIA ; HBIOS FUNC: SENSE MEDIA
|
||||
LD E,1 ; PERFORM MEDIA DISCOVERY
|
||||
RST 08
|
||||
|
||||
RST 08 ; DO IT
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
POP HL ; RESTORE DRIVE LIST PTR
|
||||
POP DE ; RESTORE DE
|
||||
|
||||
RET NZ ; IF NO MEDIA, JUST RETURN
|
||||
|
||||
DRV_INIT3B:
|
||||
; IF ACTIVE...
|
||||
RET NZ ; OFFLINE, SKIP ENTIRE UNIT
|
||||
;
|
||||
DRV_INIT3A:
|
||||
LD (HL),C ; SAVE UNIT NUM IN LIST
|
||||
INC HL ; BUMP PTR
|
||||
INC D ; INC TOTAL DEVICE COUNT
|
||||
BIT 5,B ; HIGH CAPACITY?
|
||||
RET Z ; DONE IF NOT
|
||||
INC E ; INCREMENT HARD DISK COUNT
|
||||
RET ; AND RETURN
|
||||
RET ; DONE
|
||||
;
|
||||
DRV_INIT4: ; SET SLICES PER VOLUME (HDSPV) BASED ON HARD DISK VOLUME COUNT
|
||||
LD A,E ; HARD DISK VOLUME COUNT TO A
|
||||
@@ -2987,7 +2977,8 @@ DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE
|
||||
LD C,(HL) ; GET UNIT NUM FROM LIST
|
||||
PUSH BC ; PRESERVE LOOP CONTROL
|
||||
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
|
||||
RST 08 ; CALL HBIOS, D := DEVICE TYPE
|
||||
RST 08 ; CALL HBIOS, C := DEVICE ATTRIBUTES
|
||||
LD A,C ; DEVICE ATTRIBUTES TO A
|
||||
POP BC ; GET UNIT INDEX BACK IN C
|
||||
PUSH BC ; RESAVE LOOP CONTROL
|
||||
CALL DRV_INIT7 ; MAKE DRIVE MAP ENTRY(S)
|
||||
@@ -3001,10 +2992,9 @@ DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE
|
||||
DRV_INIT7: ; PROCESS UNIT
|
||||
LD E,0 ; INITIALIZE SLICE INDEX
|
||||
LD B,1 ; DEFAULT LOOP COUNTER
|
||||
LD A,D ; DEVICE TYPE TO ACCUM
|
||||
LD D,C ; UNIT NUMBER TO D
|
||||
CP DIODEV_IDE ; HARD DISK DEVICE?
|
||||
JR C,DRV_INIT8 ; NOPE, LEAVE LOOP COUNT AT 1
|
||||
BIT 5,A ; HIGH CAPACITY DEVICE?
|
||||
JR Z,DRV_INIT8 ; NOPE, LEAVE LOOP COUNT AT 1
|
||||
LD A,(HDSPV) ; GET SLICES PER VOLUME TO ACCUM
|
||||
LD B,A ; MOVE TO B FOR LOOP COUNTER
|
||||
;
|
||||
@@ -3415,7 +3405,7 @@ DIRBUF .DW 0 ; DIR BUF POINTER
|
||||
HEAPTOP .DW BUFPOOL ; CURRENT TOP OF HEAP
|
||||
BOOTVOL .DW 0 ; BOOT VOLUME, MSB=BOOT UNIT, LSB=BOOT SLICE
|
||||
HDSPV .DB 2 ; SLICES PER VOLUME FOR HARD DISKS (MUST BE >= 1)
|
||||
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURINT DRV_INIT
|
||||
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURING DRV_INIT
|
||||
DRVLSTC .DB 0 ; ENTRY COUNT FOR ACTIVE DRIVE LIST
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
|
||||
@@ -156,7 +156,9 @@ dinit:
|
||||
ld hl,drvlst ; init hl ptr to drive list
|
||||
;
|
||||
dinit2:
|
||||
push bc ; save loop cnt & unit
|
||||
call dinit3 ; check drive
|
||||
pop bc ; recover loop cnt & unit
|
||||
inc c ; next unit
|
||||
djnz dinit2 ; loop
|
||||
ld a,d ; total device count to d
|
||||
@@ -169,48 +171,35 @@ dinit3:
|
||||
push bc ; save loop control
|
||||
ld b,17h ; hbios func: report device info
|
||||
rst 08 ; call hbios, unit to c
|
||||
ld a,d ; device type to a
|
||||
ld a,c ; device attributes to a
|
||||
pop bc ; restore loop control
|
||||
pop hl ; restore drive list ptr
|
||||
pop de ; restore de
|
||||
cp 30h ; hard disk device?
|
||||
jr nc,dinit3a ; if so, handle special
|
||||
ld (hl),c ; save unit num in list
|
||||
inc hl ; bump ptr
|
||||
inc d ; inc total device count
|
||||
ret
|
||||
ld b,a ; attributes to b
|
||||
;
|
||||
dinit3a:
|
||||
; check for hard disk removable cartridge drives
|
||||
cp 0A0h ; ppa (zip drive) is removable
|
||||
jr z,dinit3b ; if so, skip media check
|
||||
cp 0B0h ; imm (zip drive) is removable
|
||||
jr z,dinit3b ; if so, skip media check
|
||||
cp 0C0h ; syq (syquest drive) is removable
|
||||
jr z,dinit3b ; if so, skip media check
|
||||
|
||||
; check for active and return if not
|
||||
; if device is not removable, then check to ensure it is
|
||||
; actually online. if not, skip unit entirely.
|
||||
bit 6,b ; removable?
|
||||
jr nz,dinit3a ; if so, skip media check
|
||||
push de ; save de (hard disk volume counter)
|
||||
push hl ; save drive list ptr
|
||||
push bc ; save loop control
|
||||
|
||||
ld b,18h ; hbios func: sense media
|
||||
ld e,1 ; perform media discovery
|
||||
rst 08
|
||||
|
||||
rst 08 ; do it
|
||||
pop bc ; restore loop control
|
||||
pop hl ; restore drive list ptr
|
||||
pop de ; restore de
|
||||
|
||||
ret nz ; if no media, just return
|
||||
|
||||
dinit3b:
|
||||
; if active...
|
||||
ret nz ; offline, skip entire unit
|
||||
;
|
||||
dinit3a:
|
||||
ld (hl),c ; save unit num in list
|
||||
inc hl ; bump ptr
|
||||
inc d ; inc total device count
|
||||
bit 5,b ; high capacity?
|
||||
ret z ; done if not
|
||||
inc e ; increment hard disk count
|
||||
ret ; and return
|
||||
ret ; done
|
||||
|
||||
dinit4: ; set slices per volume (hdspv) based on hard disk volume count
|
||||
ld a,e ; hard disk volume count to a
|
||||
@@ -247,7 +236,8 @@ dinit6:
|
||||
push bc ; preserve loop control
|
||||
push hl ; preserve dph pointer
|
||||
ld b,17h ; hbios func: report device info
|
||||
rst 08 ; call hbios, d := device type
|
||||
rst 08 ; call hbios, a := device attributes
|
||||
ld a,c ; device attributes to a
|
||||
pop hl ; restore dph pointer
|
||||
pop bc ; get unit index back in c
|
||||
push bc ; resave loop control
|
||||
@@ -262,10 +252,9 @@ dinit6:
|
||||
dinit7: ; process a unit (all slices)
|
||||
ld e,0 ; initialize slice index
|
||||
ld b,1 ; default loop counter
|
||||
ld a,d ; device type to accum
|
||||
ld d,c ; unit number to d
|
||||
cp 030h ; hard disk device?
|
||||
jr c,dinit8 ; nope, leave loop count at 1
|
||||
bit 5,a ; high capacity device?
|
||||
jr z,dinit8 ; nope, leave loop count at 1
|
||||
ld a,(hdspv) ; get slices per volume to accum
|
||||
ld b,a ; move to b for loop counter
|
||||
|
||||
|
||||
@@ -172,6 +172,11 @@ please let me know if I missed you!
|
||||
|
||||
* The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
* Rob Prouse has created many of the supplemental disk images
|
||||
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
|
||||
BASIC Compiler, Microsoft Fortran Compiler, and a Games
|
||||
compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
|
||||
@@ -757,28 +757,36 @@ of memory because it avoids a double copy.
|
||||
Reports device information about the specified Disk Unit (C). The
|
||||
Status (A) is a standard HBIOS result code.
|
||||
|
||||
Bit 7 of the Device Attribute (C) value returned indicates whether the
|
||||
device is a floppy disk. If it is a floppy disk, the Device Attribute
|
||||
(C) value is encoded as follows:
|
||||
The Device Attribute (C) value returned indicates various
|
||||
feature indicators related to the device being referenced
|
||||
by the specified Disk Unit (C). The high 3 bits apply to
|
||||
all devices. The definition of the low 5 bits depends on
|
||||
whether the device is a Floppy (indicated by bit 5).
|
||||
|
||||
The common bits are:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 7 | = 1 (Floppy Disk) |
|
||||
| 6-5 | Form Factor: 0=8", 1=5.25", 2=3.5", 3=Other |
|
||||
| 4 | Sides: 0=SS, 1=DS |
|
||||
| 3-2 | Density: 0=SD, 1=DD, 2=HD, 3=ED |
|
||||
| 1-0 | Reserved |
|
||||
|
||||
If the Disk Unit (C) specified is a not floppy disk, then the Device
|
||||
Attribute (C) encoding is as follows:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 7 | = 0 (not Floppy Disk) |
|
||||
| 7 | Floppy |
|
||||
| 6 | Removable |
|
||||
| 5-3 | Type: 0=Hard, 1=CF, 2=SD, 3=USB, |
|
||||
| | 4=ROM, 5=RAM, 6=RAMF, 7=FLASH |
|
||||
| 2-0 | Reserved |
|
||||
| 5 | High Capacity (>8 MB) |
|
||||
|
||||
The Floppy specific bits are:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 4-3 | Form Factor: 0=8", 1=5.25", 2=3.5", 3=Other |
|
||||
| 2 | Sides: 0=SS, 1=DS |
|
||||
| 1-0 | Density: 0=SD, 1=DD, 2=HD, 3=ED |
|
||||
|
||||
The non-Floppy specific bits are:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 4 | LBA Capable |
|
||||
| 3-0 | Media Type: 0=Hard Disk, 1=CF, 2=SD, 3=USB, |
|
||||
| | 4=ROM, 5=RAM, 6=RAMF, 7=FLASH, 8=CD-ROM, |
|
||||
| | 9=Cartridge |
|
||||
|
||||
Device Type (D) indicates the specific hardware driver that handles the
|
||||
specified Disk Unit (C). Values are listed at the start of this
|
||||
@@ -1001,6 +1009,198 @@ used.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Display Keypad (DSKY)
|
||||
|
||||
The Display Keypad functions provide read/write access to a segment
|
||||
style display and associated hex keypad.
|
||||
|
||||
HBIOS only supports a single DSKY device since there is no reason to have
|
||||
more than one at a time. The DSKY unit is assigned a Device Type ID
|
||||
which indicates the specific hardware device driver that handles the
|
||||
unit. The table below enumerates these values.
|
||||
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| DSKYDEV_ICM | 0x00 | Original ICM7218 based DSKY | icm.asm |
|
||||
| DSKYDEV_PKD | 0x10 | Next Gen Intel P8279 based DSKY | pkd.asm |
|
||||
|
||||
When segment display function encodes the display data in a byte per
|
||||
character format. Currently, all segment displays are exactly
|
||||
8 charadcters and this is assumed in API calls. The encoding of each
|
||||
byte is as shown below:
|
||||
|
||||
```
|
||||
+---01---+
|
||||
| |
|
||||
20 02
|
||||
| |
|
||||
+---40---+
|
||||
| |
|
||||
10 04
|
||||
| |
|
||||
+---08---+ 80
|
||||
```
|
||||
|
||||
The keypad keys are identified by the following key ids. Not all
|
||||
keypads will contain all keys.
|
||||
|
||||
| **Key Id** | **Key Definition** | **Key Id** | **Key Definition** |
|
||||
|------------|--------------------|------------|--------------------|
|
||||
| $00 | Hex Numeric 0 | $10 | Forward |
|
||||
| $01 | Hex Numeric 1 | $11 | Backward |
|
||||
| $02 | Hex Numeric 2 | $12 | Clear |
|
||||
| $03 | Hex Numeric 3 | $13 | Enter |
|
||||
| $04 | Hex Numeric 4 | $14 | Deposit |
|
||||
| $05 | Hex Numeric 5 | $15 | Examine |
|
||||
| $06 | Hex Numeric 6 | $16 | Go |
|
||||
| $07 | Hex Numeric 7 | $17 | Boot |
|
||||
| $08 | Hex Numeric 8 | $18 | F4 |
|
||||
| $09 | Hex Numeric 9 | $19 | F3 |
|
||||
| $0A | Hex Numeric A | $1A | F2 |
|
||||
| $0B | Hex Numeric B | $1B | F1 |
|
||||
| $0C | Hex Numeric C | | |
|
||||
| $0D | Hex Numeric D | | |
|
||||
| $0E | Hex Numeric E | | |
|
||||
| $0F | Hex Numeric F | | |
|
||||
|
||||
### Function 0x30 -- DSKY Reset (DSKYRESET)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x30 | A: Status |
|
||||
|
||||
This function performs a device dependent reset operation on the DSKY.
|
||||
The display will be cleared, keyboard queue will be flushed, and
|
||||
chip will be reinitialized. The returned Status (A) is a standard
|
||||
HBIOS result code.
|
||||
|
||||
### Function 0x31 -- DSKY (DSKYSTATUS)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x31 | A: Status / Characters Pending |
|
||||
|
||||
Return the count of Characters Pending (A) in the input buffer of the
|
||||
DSKY. If the unit has no input buffer or the
|
||||
buffer utilization is not available, the function may return simply 0 or
|
||||
1 where 0 means there is no character available and 1 means there is at
|
||||
least one character available.
|
||||
|
||||
The value returned in register A is used as both a Status (A) code and
|
||||
the return value. Negative values (bit 7 set) indicate a standard HBIOS
|
||||
result (error) code. Otherwise, the return value represents the number
|
||||
of characters in the buffer.
|
||||
|
||||
### Function 0x32 -- DSKY Get Key (DSKYGETKEY)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x32 | A: Status |
|
||||
| | E: Character Value |
|
||||
|
||||
Read and return a Character (E) from the DSKY.
|
||||
If no character(s) are available in the unit's input buffer, this
|
||||
function will wait indefinitely. The returned Status (A) is a standard
|
||||
HBIOS result code.
|
||||
|
||||
The Character Value (E) returned is not ASCII. It is a keypad key
|
||||
id. The possible id values are listed at the start of this section.
|
||||
|
||||
### Function 0x33 -- DSKY Show HEX (RTCSHOWHEX)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x33 | A: Status |
|
||||
| DE:HL=Binary Value | |
|
||||
|
||||
Display the 32-bit binary value (DE:HL) in hex on the DSKY segment
|
||||
display. All decimal points of the display will be off.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x34 -- DSKY Show Segments (DSKYSHOWSEG)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x34 | A: Status |
|
||||
| HL: Buffer Address | |
|
||||
|
||||
Display the segment-encoded values on the segment display. The encoding
|
||||
is defined at the start of this section. The entire displa is updated
|
||||
and it is assumed that an 8 character buffer will be pointed to by HL.
|
||||
The buffer must reside in high memory.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x35 -- DSKY Keypad LEDs (DSKYKEYLEDS)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x35 | A: Status |
|
||||
| HL: Buffer Address | |
|
||||
|
||||
Light the LEDs for the keypad keys according to the
|
||||
bitmap contained in the buffer pointed to by HL. The buffer
|
||||
must be located in high memory and is assumed to be 8 bytes.
|
||||
|
||||
At this time, the bitmap is specific to the PKD hardware.
|
||||
This function is ignored by the ICM hardware.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x36 -- DSKY Status LED (DSKYSTATLED)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x36 | A: Status |
|
||||
| D: LED Number | |
|
||||
| E: LED State | |
|
||||
|
||||
Set or clear the status LED specified in D. The state of
|
||||
the LED is contained in E. If E=0, the LED will be turned
|
||||
off. If E=1, the LED will be turned on.
|
||||
|
||||
This function is specific to the PKD hardware. It will be ignored
|
||||
by the ICM hardware.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x37 -- DSKY Beep (DSKYBEEP)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x37 | A: Status |
|
||||
|
||||
Beep the onboard speaker of the DSKY.
|
||||
This function is specific to the PKD hardware. It will be ignored
|
||||
by the ICM hardware.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x38 -- DSKY Device (DSKYDEVICE)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x38 | A: Status |
|
||||
| | C: Device Attributes |
|
||||
| | D: Device Type |
|
||||
| | E: Device Number |
|
||||
| | H: Device Unit Mode |
|
||||
| | L: Device I/O Base Address |
|
||||
|
||||
Returns device information for the DSKY unit. The Status (A) is a
|
||||
standard HBIOS result code.
|
||||
|
||||
Device Attribute (C) values are not yet defined. Device Type (D)
|
||||
indicates the specific hardware driver that handles the specified
|
||||
character unit. Values are listed at the start of this section. Device
|
||||
Number (E) indicates the physical device number assigned per driver
|
||||
which is always 0 for DSKY.
|
||||
|
||||
Device Mode (H) is used to indicate the variant of the chip or circuit
|
||||
that is used by the specified unit. The Device I/O Base Address (L)
|
||||
indicates the starting port address of the hardware interface that is
|
||||
servicing the specified unit. Both of these values are considered
|
||||
driver specific. Refer to the associated hardware driver for the values
|
||||
used.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Video Display Adapter (VDA)
|
||||
|
||||
The VDA functions are provided as a common interface to Video Display
|
||||
@@ -1752,6 +1952,9 @@ The hardware Platform (L) is identified as follows:
|
||||
| PLT_RCZ280 |12 | RCBUS W/ Z280 |
|
||||
| PLT_MBC |13 | NHYODYNE MULTI-BOARD COMPUTER |
|
||||
| PLT_RPH |14 | RHYOPHYRE GRAPHICS SBC |
|
||||
| PLT_Z80RETRO |15 | Z80 RETRO COMPUTER |
|
||||
| PLT_S100 |16 | S100 COMPUTERS Z180 |
|
||||
| PLT_DUO |17 | DUODYNE Z80 SYSTEM |
|
||||
|
||||
### Function 0xF2 -- System Set Bank (SYSSETBNK)
|
||||
|
||||
|
||||
@@ -202,6 +202,8 @@ below, **carefully** pick the appropriate ROM image for your hardware.
|
||||
| [Z280 ZZRCC CPU Module]^7^ | RCBus | RCZ280_zzrc.rom | 115200 |
|
||||
| [Z280 ZZ80MB SBC]^7^ | RCBus | RCZ280_zz80mb.rom | 115200 |
|
||||
| [Z80-Retro SBC]^8^ | - | Z80RETRO_std.rom | 38400 |
|
||||
| [S100 Computers Z180]^9^ | S100 | S100_std.rom | 38400 |
|
||||
| [Duodyne Z80 System]^1^ | Duo | DUO_std.rom | 38400 |
|
||||
|
||||
| ^1^Designed by Andrew Lynch
|
||||
| ^2^Designed by Sergey Kiselev
|
||||
@@ -211,6 +213,7 @@ below, **carefully** pick the appropriate ROM image for your hardware.
|
||||
| ^6^Designed by Steve Garcia
|
||||
| ^7^Designed by Bill Shen
|
||||
| ^8^Designed by Peter Wilson
|
||||
| ^9^Designed by John Monahan
|
||||
|
||||
RCBus refers to Spencer Owen's RC2014 bus specification and derivatives
|
||||
including RC26, RC40, RC80, and BP80.
|
||||
@@ -2213,18 +2216,23 @@ file which is bootable.
|
||||
output will be garbled if no such terminal or emulator
|
||||
is used for console output.
|
||||
|
||||
* There is no straightforward mechanism to move files in
|
||||
* There is no built-in mechanism to move files in
|
||||
and out of p-System. However, the .vol files in Source/pSys
|
||||
can be read and modified by CiderPress. CiderPress is able
|
||||
to add and remove individual files.
|
||||
|
||||
Andrew Davidson has created a Python script that can extract p-System
|
||||
volumes from an existing disk image file. The script is also capable
|
||||
of inserting a modified volume back into the disk image file.
|
||||
This tool is available at
|
||||
<https://github.com/robosnacks/psysimg>.
|
||||
|
||||
## FreeRTOS
|
||||
|
||||
Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is
|
||||
not provided in the RomWBW distribution. FreeRTOS is available under
|
||||
the
|
||||
[MIT licence](https://www.freertos.org/a00114.html) and further general
|
||||
information is available at
|
||||
the [MIT licence](https://www.freertos.org/a00114.html)
|
||||
and further general information is available at
|
||||
[FreeRTOS](https://www.freertos.org/RTOS.html).
|
||||
|
||||
You can also contact Phillip for detailed information on the Z180
|
||||
@@ -3152,6 +3160,46 @@ directed to complete a partial flash using the /P command line switch.
|
||||
|
||||
`E>FLASH WRITE ROM.UPD /P`
|
||||
|
||||
# Related Projects
|
||||
|
||||
Outside of the hardware platforms adapted to RomWBW, there are a variety
|
||||
of software projects that either target RomWBW specifically or provide
|
||||
a RomWBW-specific variation.
|
||||
|
||||
## Z88DK
|
||||
|
||||
Z88DK is a software powerful development kit for Z80 computers
|
||||
supporting both C and assembly language. This kit now provides
|
||||
specific library support for RomWBW HBIOS. The Z88DK project is
|
||||
hosted at <https://github.com/z88dk/z88dk>.
|
||||
|
||||
## Paleo Editor
|
||||
|
||||
Steve Garcia has created a Windows-hosted IDE that is tailored to
|
||||
development of RomWBW. The project can be found at
|
||||
<https://github.com/alloidian/PaleoEditor>.
|
||||
|
||||
## p-System Volume Management Script
|
||||
|
||||
Andrew Davidson has created a Python script to automate the insertion
|
||||
and deletion of volumes within the p-System disk image. These scripts
|
||||
are hosted at <https://github.com/robosnacks/psysimg>.
|
||||
|
||||
## Z80 fig-FORTH
|
||||
|
||||
Dimitri Theulings' implementation of fig-FORTH for the Z80 has a
|
||||
RomWBW-specific variant. This fig-FORTH is built into the RomWBW
|
||||
ROM. However, the project itself is hosted at
|
||||
<https://github.com/dimitrit/figforth>.
|
||||
|
||||
## RomWBW Date/Time Utility
|
||||
|
||||
Kevin Boone has created a generic application that will display or
|
||||
set the date/time of an RTC on RomWBW. The application runs on all of
|
||||
the CP/M OS variants. This tool (`WDATE`) is included on the RomWBW
|
||||
OS disk images. The project is hosted at
|
||||
<https://github.com/kevinboone/wdate-cpm>.
|
||||
|
||||
# Acknowledgments
|
||||
|
||||
I want to acknowledge that a great deal of the code and inspiration
|
||||
@@ -3217,6 +3265,11 @@ please let me know if I missed you!
|
||||
|
||||
* The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
* Rob Prouse has created many of the supplemental disk images
|
||||
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
|
||||
BASIC Compiler, Microsoft Fortran Compiler, and a Games
|
||||
compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
@@ -3877,6 +3930,52 @@ the RomWBW HBIOS configuration.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
### S100 Computers Z180
|
||||
|
||||
| | |
|
||||
|-------------------|---------------|
|
||||
| ROM Image File | S100_std.rom |
|
||||
| Console Baud Rate | 38400 |
|
||||
| Interrupts | Mode 2 |
|
||||
|
||||
- CPU speed assumed to be 18.432 MHz
|
||||
- System timer is generated by Z180 CPU
|
||||
- Hardware auto-detected:
|
||||
- Interrupt-driven RTC
|
||||
- Z180 ASCI Serial Ports
|
||||
- Onboard SD Card Interface
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
### Duodyne Z80 System
|
||||
|
||||
| | |
|
||||
|-------------------|---------------|
|
||||
| ROM Image File | DUO_std.rom |
|
||||
| Console Baud Rate | 38400 |
|
||||
| Interrupts | None |
|
||||
|
||||
- CPU speed is detected at startup if DS1302 RTC is active
|
||||
- Otherwise 8.000 MHz assumed
|
||||
- System timer is generated by CTC if available
|
||||
- Hardware auto-detected:
|
||||
- DS1302 RTC
|
||||
- Zilog CTC
|
||||
- Zilog DMA Module
|
||||
- UART Serial Adapter
|
||||
- SIO Serial Interface
|
||||
- LPT Printer Interface
|
||||
- Zilog Parallel Interface
|
||||
- CVDU Display Adapter
|
||||
- TMS9938/58 Display Adapter
|
||||
- PS/2 Keyboard Interface
|
||||
- AY-3-8910/YM2149 Sound Module
|
||||
- Floppy Disk Controller w/ 3.5" HD Drives
|
||||
- PPIDE Hard Disk Interface
|
||||
- Interrupts may be enabled in build options
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Appendix B - Device Summary
|
||||
|
||||
The table below briefly describes each of the possible devices that
|
||||
@@ -3893,7 +3992,6 @@ may be discovered by RomWBW in your system.
|
||||
| DMA | System | Zilog DMA Controller |
|
||||
| DS1307 | RTC | Maxim DS1307 PCF I2C Real-Time Clock w/ NVRAM |
|
||||
| DS1501RTC | RTC | Maxim DS1501/DS1511 Watchdog Real-Time Clock |
|
||||
| DSKY | System | Keypad & Display |
|
||||
| DSRTC | RTC | Maxim DS1302 Real-Time Clock w/ NVRAM |
|
||||
| DUART | Char | SCC2681 or compatible Dual UART |
|
||||
| EMM | Disk | Disk drive on Parallel Port emm interface (Zip Drive) |
|
||||
@@ -3901,6 +3999,7 @@ may be discovered by RomWBW in your system.
|
||||
| GDC | Video | uPD7220 Video Display Controller |
|
||||
| HDSK | Disk | SIMH Simulator Hard Disk |
|
||||
| IDE | Disk | IDE/ATA Hard Disk Interface |
|
||||
| ICM | DsKy | ICM7218-based Display/Keypad on PPI |
|
||||
| IMM | Disk | IMM Zip Drive on PPI |
|
||||
| INTRTC | RTC | Interrupt-based Real Time Clock |
|
||||
| KBD | Kbd | 8242 PS/2 Keyboard Controller |
|
||||
@@ -3910,6 +4009,7 @@ may be discovered by RomWBW in your system.
|
||||
| MSXKYB | Kbd | MSX Compliant Matrix Keyboard |
|
||||
| I2C | System | I2C Interface |
|
||||
| PIO | Char | Zilog Parallel Interface Controller |
|
||||
| PKD | DsKy | P8279-based Display/Keypad on PPI |
|
||||
| PPIDE | Disk | 8255 IDE/ATA Hard Disk Interface |
|
||||
| PPA | Disk | PPA Zip Drive on PPI |
|
||||
| PPK | Kbd | Matrix Keyboard |
|
||||
|
||||
@@ -484,3 +484,93 @@ TERM_ATTACH: (C=VIDEO UNIT, DE=<VDA>_DISPATCH)
|
||||
- QUERY ATTACHED VDA FOR SCREEN SIZE (VIA <EMU>_VDADISP)
|
||||
- INITIALIZE ALL WORKING VARIABLES AND EMULATOR STATE
|
||||
- RETURN (A=STATUS)
|
||||
|
||||
|
||||
==============
|
||||
DSKY Functions
|
||||
==============
|
||||
|
||||
RESET ($30):
|
||||
B=Function A=Result
|
||||
|
||||
STAT ($31):
|
||||
B=Function A=Result / Bytes Pending
|
||||
|
||||
A=Number of characters waiting or error code if negative
|
||||
|
||||
GETKEY ($32):
|
||||
B=Function A=Result
|
||||
E=Key Code
|
||||
|
||||
A=DSKY key value or error code if negative
|
||||
|
||||
SHOWHEX ($33):
|
||||
B=Function A=Result
|
||||
DE:HL=Value (32-bit)
|
||||
|
||||
Display value of DE:HL in hex on display. It is not
|
||||
possible to show decimal points.
|
||||
|
||||
SHOWSEG ($34):
|
||||
B=Function A=Result
|
||||
HL=Buffer (raw segment encoded)
|
||||
|
||||
Display raw segment values. Each byte represents one
|
||||
character. Each segment of the character is represented
|
||||
by a bit. The buffer must be located in high memory.
|
||||
The segments are encoded as shown below:
|
||||
|
||||
+--01--+
|
||||
20 02
|
||||
+--40--+
|
||||
10 04
|
||||
+--08--+ 80
|
||||
|
||||
KEYLEDS ($35):
|
||||
B=Function A=Result
|
||||
HL=Buffer (LED bitmap)
|
||||
|
||||
Light the LEDs for the keypad keys according to the
|
||||
bitmap contained in the buffer pointed to by HL. The buffer
|
||||
must be located in high memory.
|
||||
|
||||
At this time, the bitmap is specific to the DSKYNG hardware.
|
||||
This function is ignored by the original DSKY.
|
||||
|
||||
STATLED ($36):
|
||||
B=Function A=Result
|
||||
D=LED Number
|
||||
E=LED State (0/1)
|
||||
|
||||
Set or clear the status LED specified in D. The state of
|
||||
the LED is contained in E. If E=0, the LED will be turned
|
||||
off. If E=1, the LED will be turned on.
|
||||
|
||||
BEEP ($37):
|
||||
B=Function A=Result
|
||||
|
||||
Beep the onboard speaker of the DSKY. Only the DSKYNG hardware
|
||||
has a speaker. This function will be ignored by the original
|
||||
DSKY.
|
||||
|
||||
DEVICE ($38):
|
||||
B=Function A=Result
|
||||
D=Device Type
|
||||
E=Device Number
|
||||
C=Device Attributes
|
||||
H=Device Mode
|
||||
L=Base I/O Adr
|
||||
|
||||
Returns device information for the DSKY unit. The Status (A) is a
|
||||
standard HBIOS result code. Device Attribute (C) values are not yet
|
||||
defined. Device Type (D) indicates the specific hardware driver that
|
||||
handles the specified character unit. Values are listed at the start
|
||||
of this section. Device Number (E) indicates the physical device
|
||||
number assigned per driver which is always 0 for DSKY.
|
||||
|
||||
Device Mode (H) is used to indicate the variant of the chip or circuit
|
||||
that is used by the specified unit. The Device I/O Base Address (L)
|
||||
indicates the starting port address of the hardware interface that is
|
||||
servicing the specified unit. Both of these values are considered
|
||||
driver specific. Refer to the associated hardware driver for the
|
||||
values used.
|
||||
|
||||
@@ -93,7 +93,14 @@ call :asm imgpad2 || exit /b
|
||||
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin osimg.bin || exit /b
|
||||
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + netboot.mod + updater.bin + usrrom.bin osimg1.bin || exit /b
|
||||
copy /b imgpad2.bin osimg2.bin || exit /b
|
||||
|
||||
if %Platform%==S100 (
|
||||
zxcc slr180 -s100mon/fh
|
||||
zxcc mload25 -s100mon || exit /b
|
||||
copy /b s100mon.com osimg2.bin || exit /b
|
||||
) else (
|
||||
copy /b imgpad2.bin osimg2.bin || exit /b
|
||||
)
|
||||
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin osimg_small.bin || exit /b
|
||||
|
||||
@@ -224,5 +231,7 @@ call Build DYNO std || exit /b
|
||||
call Build UNA std || exit /b
|
||||
call Build RPH std || exit /b
|
||||
call Build Z80RETRO std || exit /b
|
||||
call Build S100 std || exit /b
|
||||
call Build DUO std || exit /b
|
||||
|
||||
goto :eof
|
||||
|
||||
@@ -27,8 +27,8 @@ $ErrorAction = 'Stop'
|
||||
# UNA BIOS is simply imbedded, it is not built here.
|
||||
#
|
||||
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "UNA"
|
||||
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH"
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA"
|
||||
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100"
|
||||
$PlatformListZ280 = "RCZ280"
|
||||
|
||||
#
|
||||
|
||||
@@ -32,11 +32,13 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; bash Build.sh
|
||||
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="DUO"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc126"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc130"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc131"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc140"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc503"; bash Build.sh
|
||||
ROM_PLATFORM="S100"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="Z80RETRO"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; bash Build.sh
|
||||
|
||||
@@ -11,6 +11,7 @@ if exist *.exp del *.exp
|
||||
if exist *.tmp del *.tmp
|
||||
if exist *.mrk del *.mrk
|
||||
if exist *.sys del *.sys
|
||||
if exist *.hex del *.hex
|
||||
if exist build.inc del build.inc
|
||||
if exist font*.asm del font*.asm
|
||||
if exist build_env.cmd del build_env.cmd
|
||||
|
||||
58
Source/HBIOS/Config/DUO_std.asm
Normal file
58
Source/HBIOS/Config/DUO_std.asm
Normal file
@@ -0,0 +1,58 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; DUODYNE STANDARD CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_duo.asm"
|
||||
;
|
||||
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
;
|
||||
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
|
||||
;
|
||||
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
;
|
||||
CPUSPDDEF .SET SPD_LOW ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
;
|
||||
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
;
|
||||
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY
|
||||
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
;
|
||||
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
;UARTCFG .SET UARTCFG | SER_RTS
|
||||
;
|
||||
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
CVDUMON .SET CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
@@ -42,12 +42,15 @@ RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
;
|
||||
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
DSKYENABLE .SET FALSE ; ENABLES DSKY
|
||||
DSKYMODE .SET DSKYMODE_NG ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY
|
||||
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
;
|
||||
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
;UARTCFG .SET UARTCFG | SER_RTS
|
||||
;
|
||||
ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
CVDUMON .SET CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
;
|
||||
#include "cfg_rcz280.asm"
|
||||
;
|
||||
CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
|
||||
79
Source/HBIOS/Config/RCZ80_jbl.asm
Normal file
79
Source/HBIOS/Config/RCZ80_jbl.asm
Normal file
@@ -0,0 +1,79 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RCBUS Z80 COLECOVISION-COMPATIBLE CONFIGURATION FOR J.B. LANGSTON'S GAME BOARDS
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS CONFIGURATION ENABLES DRIVERS FOR THE TMS9918 AND SN76489 BOARDS BY J.B. LANGSTON
|
||||
; AND THE YM2149 BOARD BY ED BRINDLEY. THE TMS9918 IS CONFIGURED TO USE THE COLECOVISION
|
||||
; PORTS AND HAS INTERRUPTS DISABLED BECAUSE COLECOVISION USES NMI, WHICH WOULD BREAK CP/M
|
||||
; WHEN ENABLED. IT IS CONFIGURED FOR A 3.686MHZ CPU CLOCK IN ORDER TO BE COMPATIBLE WITH
|
||||
; COLECOVISION GAMES. THE FIRST SIO PORT IS CONFIGURED TO RUN AT 115200 BPS WITH THE CPU
|
||||
; RUNNING AT THIS SPEED. THE SECOND SIO PORT IS CONFIGURED TO RUN AT 115200 BPS WITH THE
|
||||
; SECOND CLOCK SET TO 7.373MHZ. LOWER BAUD RATES CAN BE ACHIEVED ON THE SECOND PORT BY
|
||||
; MOVING THE SECONDARY CLOCK DIVIDER JUMPER (E.G., 38400 @ 2.458MHZ). THE BAUD RATE DOES
|
||||
; NOT NEED TO BE CHANGED IN THIS CONFIGURATION FILE IN ORDER TO DO THIS, BUT THE DEVICE
|
||||
; LIST WILL INCORRECTLY SHOW THE PORT RUNNING AT 115200 REGARDLESS OF THE CLOCK DIVIDER.
|
||||
; UNCOMMENT THE LINE THAT SETS BOOTCON TO 1 TO BOOT ON THE SECOND SIO PORT BY DEFAULT.
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "Z" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz80.asm"
|
||||
;
|
||||
CPUOSC .SET 3686400 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;BOOTCON .SET 1 ; BOOT CONSOLE DEVICE
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .SET FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .SET 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .SET 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .SET SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0BASE .SET $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .SET CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .SET SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .SET -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .SET 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .SET SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
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)
|
||||
VDAEMU_SERKBD .SET 1 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET TRUE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
47
Source/HBIOS/Config/S100_std.asm
Normal file
47
Source/HBIOS/Config/S100_std.asm
Normal file
@@ -0,0 +1,47 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; S100 STANDARD CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_s100.asm"
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
;
|
||||
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
;
|
||||
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .SET SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
|
||||
@@ -39,6 +39,8 @@ FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
ICMENABLE .SET TRUE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -34,8 +34,10 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
;
|
||||
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .SET $A0 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .SET $A0 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
;
|
||||
|
||||
@@ -35,7 +35,9 @@ Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .SET $A0 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .SET $A0 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
;
|
||||
|
||||
@@ -6,7 +6,7 @@ MOREDIFF = game.bin hbios_rom.bin nascom.bin usrrom.bin \
|
||||
SUBDIRS =
|
||||
DEST = ../../Binary
|
||||
TOOLS =../../Tools
|
||||
OTHERS = *.img *.rom *.com *.upd *.bin *.z80 cpm.sys zsys.sys Build.inc font*.asm *.dat hbios_env.sh
|
||||
OTHERS = *.img *.rom *.com *.upd *.bin *.hex cpm.sys zsys.sys Build.inc font*.asm *.dat hbios_env.sh
|
||||
|
||||
# DIFFMAKE = 1
|
||||
|
||||
@@ -43,6 +43,10 @@ else
|
||||
BIOS=wbw
|
||||
endif
|
||||
|
||||
ifeq ($(ROM_PLATFORM),S100)
|
||||
ROMDEPS += s100mon.bin
|
||||
endif
|
||||
|
||||
ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
|
||||
|
||||
# $(info DEPS=$(DEPS))
|
||||
@@ -58,7 +62,11 @@ $(OBJECTS) : $(ROMDEPS)
|
||||
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >osimg_small.bin
|
||||
if [ $(ROM_PLATFORM) != UNA ] ; then \
|
||||
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin usrrom.bin >osimg1.bin ; \
|
||||
cat imgpad2.bin >osimg2.bin ; \
|
||||
if [ $(ROM_PLATFORM) = S100 ] ; then \
|
||||
cat s100mon.bin >osimg2.bin ; \
|
||||
else \
|
||||
cat imgpad2.bin >osimg2.bin ; \
|
||||
fi ; \
|
||||
if [ $(ROMSIZE) -gt 0 ] ; then \
|
||||
for f in hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ; do \
|
||||
srec_cat $$f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $$f -Binary ; \
|
||||
@@ -89,6 +97,10 @@ font%.asm:
|
||||
camel80.bin:
|
||||
cp ../Forth/$@ .
|
||||
|
||||
s100mon.bin:
|
||||
$(ZXCC) $(CPM)/SLR180 -s100mon/FH
|
||||
$(ZXCC) $(CPM)/MLOAD25 -s100mon.bin=s100mon
|
||||
|
||||
tastybasic.bin:
|
||||
cp ../TastyBasic/src/$@ .
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ ASCI_RTS .EQU %00010000 ; ~RTS BIT OF CNTLA REG
|
||||
;
|
||||
#IF (ASCIINTS)
|
||||
;
|
||||
#IF (INTMODE == 2)
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
ASCI0_IVT .EQU IVT(INT_SER0)
|
||||
ASCI1_IVT .EQU IVT(INT_SER1)
|
||||
@@ -125,25 +125,19 @@ ASCI_PREINIT2:
|
||||
;
|
||||
#IF (ASCIINTS)
|
||||
;
|
||||
#IF (INTMODE >= 1)
|
||||
; Z180 ASCI INTERRUPTS OPERATE LIKE IM2 EVEN WHEN IM1 IS ACTIVE.
|
||||
;
|
||||
#IF (INTMODE > 0)
|
||||
; SETUP INT VECTORS AS APPROPRIATE
|
||||
LD A,(ASCI_DEV) ; GET DEVICE COUNT
|
||||
OR A ; SET FLAGS
|
||||
JR Z,ASCI_PREINIT3 ; IF ZERO, NO ASCI DEVICES, ABORT
|
||||
;
|
||||
#IF (INTMODE == 1)
|
||||
; ADD IM1 INT CALL LIST ENTRY
|
||||
LD HL,ASCI_INT ; GET INT VECTOR
|
||||
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST
|
||||
#ENDIF
|
||||
;
|
||||
#IF (INTMODE == 2)
|
||||
; SETUP IM2 VECTORS
|
||||
LD HL,ASCI_INT0
|
||||
LD (ASCI0_IVT),HL ; IVT INDEX
|
||||
LD HL,ASCI_INT1
|
||||
LD (ASCI1_IVT),HL ; IVT INDEX
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
@@ -204,24 +198,6 @@ ASCI_INIT1:
|
||||
;
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
; IM1 ENTRY POINT
|
||||
;
|
||||
ASCI_INT:
|
||||
; CHECK/HANDLE FIRST PORT
|
||||
LD A,(ASCI0_CFG + 1) ; GET ASCI TYPE FOR FIRST ASCI
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,ASCI_INT0 ; CALL IF EXISTS
|
||||
RET NZ ; DONE IF INT HANDLED
|
||||
;
|
||||
; CHECK/HANDLE SECOND PORT
|
||||
LD A,(ASCI1_CFG + 1) ; GET ASCI TYPE FOR SECOND ASCI
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,ASCI_INT1 ; CALL IF EXISTS
|
||||
;
|
||||
RET ; DONE
|
||||
;
|
||||
; IM2 ENTRY POINTS
|
||||
;
|
||||
ASCI_INT0:
|
||||
; INTERRUPT HANDLER FOR FIRST ASCI (ASCI0)
|
||||
LD IY,ASCI0_CFG ; POINT TO ASCI0 CFG
|
||||
|
||||
300
Source/HBIOS/cfg_duo.asm
Normal file
300
Source/HBIOS/cfg_duo.asm
Normal file
@@ -0,0 +1,300 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR DUODYNE
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
|
||||
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
|
||||
; UNDER THIS DIRECTORY.
|
||||
;
|
||||
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
|
||||
; FOR THE PLATFORM.
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "Duodyne", " [", CONFIG, "]"
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_DUO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
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
|
||||
;
|
||||
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
|
||||
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; 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!!!)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VERIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
|
||||
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)
|
||||
MPGSEL_2 .EQU $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
|
||||
;
|
||||
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
|
||||
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
|
||||
;
|
||||
CTCENABLE .EQU TRUE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
|
||||
CTCBASE .EQU $B0 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .EQU TRUE ; ENABLE CTC PERIODIC TIMER
|
||||
CTCMODE .EQU CTCMODE_CTR ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
|
||||
CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256)
|
||||
CTCPRECH .EQU 2 ; PRESCALE CHANNEL (0-3)
|
||||
CTCTIMCH .EQU 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .EQU (4915200/8) ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
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_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
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU TRUE ; ENABLES STATUS LED
|
||||
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
|
||||
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
|
||||
;
|
||||
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
|
||||
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
|
||||
;
|
||||
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
|
||||
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
|
||||
;
|
||||
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
|
||||
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
|
||||
;
|
||||
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS
|
||||
UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED
|
||||
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
|
||||
UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH)
|
||||
UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART
|
||||
UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART
|
||||
UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART
|
||||
UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART
|
||||
UARTDUAL .EQU TRUE ; UART: AUTO-DETECT DUAL UART
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
;
|
||||
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
;
|
||||
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
;
|
||||
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
|
||||
;
|
||||
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
|
||||
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
|
||||
CVDUENABLE .EQU TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
CVDUMODE .EQU CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
|
||||
CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
|
||||
GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
|
||||
TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
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)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
|
||||
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
;
|
||||
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_MBC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
;
|
||||
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
|
||||
IDE0MODE .EQU IDEMODE_DIO ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
|
||||
IDE0BASE .EQU $20 ; IDE 0: IO BASE ADDRESS
|
||||
IDE0DATLO .EQU $20 ; IDE 0: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE0DATHI .EQU $28 ; IDE 0: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE0A8BIT .EQU FALSE ; IDE 0A (MASTER): 8 BIT XFER
|
||||
IDE0B8BIT .EQU FALSE ; IDE 0B (MASTER): 8 BIT XFER
|
||||
IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
|
||||
IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS
|
||||
IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER
|
||||
IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER
|
||||
IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
|
||||
IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS
|
||||
IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER
|
||||
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
|
||||
;
|
||||
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
|
||||
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR
|
||||
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
|
||||
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
PPIDE1BASE .EQU $20 ; PPIDE 1: PPI REGISTERS BASE ADR
|
||||
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
|
||||
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
PPIDE2BASE .EQU $14 ; PPIDE 2: PPI REGISTERS BASE ADR
|
||||
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
|
||||
;
|
||||
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT
|
||||
PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
PIOENABLE .EQU TRUE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTMODE .EQU LPTMODE_SPP ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $EC ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM)
|
||||
PPACNT .EQU 1 ; PPA: NUMBER OF PPA DEVICES (1-2)
|
||||
PPATRACE .EQU 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPAMODE .EQU PPAMODE_SPP ; PPA: DRIVER MODE: PPAMODE_[NONE|MG014]
|
||||
PPA0BASE .EQU LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA
|
||||
PPA1BASE .EQU LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA
|
||||
;
|
||||
IMMENABLE .EQU FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
|
||||
IMMCNT .EQU 1 ; IMM: NUMBER OF IMM DEVICES (1-2)
|
||||
IMMTRACE .EQU 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
IMMMODE .EQU IMMMODE_SPP ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014]
|
||||
IMM0BASE .EQU LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM
|
||||
IMM1BASE .EQU LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM
|
||||
;
|
||||
SYQENABLE .EQU FALSE ; SYQ: ENABLE IMM DISK DRIVER (SYQ.ASM)
|
||||
SYQCNT .EQU 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2)
|
||||
SYQTRACE .EQU 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SYQMODE .EQU IMMMODE_SPP ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
|
||||
SYQ0BASE .EQU LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
|
||||
SYQ1BASE .EQU LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
|
||||
;
|
||||
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
|
||||
UFBASE .EQU $0C ; UF: REGISTERS BASE ADR
|
||||
;
|
||||
SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
|
||||
SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD
|
||||
SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM]
|
||||
;
|
||||
AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
|
||||
AYMODE .EQU AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC]
|
||||
;
|
||||
SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
|
||||
;
|
||||
DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
|
||||
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
|
||||
DMAMODE .EQU DMAMODE_MBC ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC)
|
||||
;
|
||||
YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER (MUTE STUB)
|
||||
VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76469s/CTC)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -243,6 +243,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -108,10 +108,13 @@ LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -302,6 +305,9 @@ PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
ESPCONENABLE .EQU TRUE ; ESP: ENABLE ESP32 CONSOLE IO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -73,10 +73,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -226,6 +229,9 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
ESPCONENABLE .EQU TRUE ; ESP: ENABLE ESP32 CONSOLE IO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -79,10 +79,13 @@ LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -240,6 +243,8 @@ PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -81,10 +81,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -238,6 +241,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -249,6 +249,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
@@ -260,7 +262,7 @@ LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTMODE .EQU LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
LPT0BASE .EQU $18 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT0BASE .EQU $0C ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $00 ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z280 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -253,6 +253,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
@@ -264,7 +266,7 @@ LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTMODE .EQU LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
LPT0BASE .EQU $18 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT0BASE .EQU $0C ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $00 ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -247,6 +247,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RPH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_RPH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU TRUE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -79,10 +79,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -227,6 +230,8 @@ PRPCONENABLE .EQU FALSE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
305
Source/HBIOS/cfg_s100.asm
Normal file
305
Source/HBIOS/cfg_s100.asm
Normal file
@@ -0,0 +1,305 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR S100 Z180
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
|
||||
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
|
||||
; UNDER THIS DIRECTORY.
|
||||
;
|
||||
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
|
||||
; FOR THE PLATFORM.
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "S100", " [", CONFIG, "]"
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_S100 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
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
|
||||
;
|
||||
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
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_57600_8N1 ; 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!!!)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VERIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
|
||||
RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
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)
|
||||
MPGSEL_2 .EQU $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
|
||||
;
|
||||
Z180_BASE .EQU $C0 ; Z180: I/O BASE ADDRESS FOR INTERNAL REGISTERS
|
||||
Z180_CLKDIV .EQU 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
Z180_MEMWAIT .EQU 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .EQU 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
Z180_TIMER .EQU TRUE ; Z180: ENABLE Z180 SYSTEM PERIODIC TIMER
|
||||
;
|
||||
RTCIO .EQU $0C ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
|
||||
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
|
||||
;
|
||||
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
|
||||
CTCBASE .EQU $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
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_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
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
|
||||
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
|
||||
;
|
||||
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
|
||||
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
|
||||
;
|
||||
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
|
||||
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
|
||||
;
|
||||
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
|
||||
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
|
||||
;
|
||||
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP
|
||||
DUART0ACFG .EQU DEFSERCFG ; DUART 0A: SERIAL LINE CONFIG
|
||||
DUART0BCFG .EQU DEFSERCFG ; DUART 0B: SERIAL LINE CONFIG
|
||||
DUART1BASE .EQU $40 ; DUART 1: BASE ADDRESS OF CHIP
|
||||
DUART1ACFG .EQU DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG
|
||||
DUART1BCFG .EQU DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS
|
||||
UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
|
||||
UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH)
|
||||
UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART
|
||||
UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART
|
||||
UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART
|
||||
UARTRC .EQU TRUE ; UART: AUTO-DETECT RC UART
|
||||
UARTDUAL .EQU FALSE ; UART: AUTO-DETECT DUAL UART
|
||||
;
|
||||
ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
ASCIINTS .EQU TRUE ; ASCI: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS
|
||||
ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG
|
||||
ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG
|
||||
;
|
||||
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
;
|
||||
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
;
|
||||
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU 7372800 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU 7372800 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU SER_115200_8N1 ; SIO 1A: SERIAL LINE CONFIG
|
||||
SIO1ACTCC .EQU -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1BCLK .EQU 7372800 ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1BCFG .EQU SER_115200_8N1 ; SIO 1B: SERIAL LINE CONFIG
|
||||
SIO1BCTCC .EQU -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
|
||||
;
|
||||
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
|
||||
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
|
||||
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
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)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
|
||||
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
|
||||
IDE0MODE .EQU IDEMODE_RC ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
|
||||
IDE0BASE .EQU $10 ; IDE 0: IO BASE ADDRESS
|
||||
IDE0DATLO .EQU $00 ; IDE 0: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE0DATHI .EQU $00 ; IDE 0: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE0A8BIT .EQU TRUE ; IDE 0A (MASTER): 8 BIT XFER
|
||||
IDE0B8BIT .EQU TRUE ; IDE 0B (MASTER): 8 BIT XFER
|
||||
IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
|
||||
IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS
|
||||
IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER
|
||||
IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER
|
||||
IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC]
|
||||
IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS
|
||||
IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER
|
||||
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
|
||||
;
|
||||
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
|
||||
PPIDE0BASE .EQU $20 ; PPIDE 0: PPI REGISTERS BASE ADR
|
||||
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
|
||||
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
PPIDE1BASE .EQU $00 ; PPIDE 1: PPI REGISTERS BASE ADR
|
||||
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
|
||||
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
PPIDE2BASE .EQU $00 ; PPIDE 2: PPI REGISTERS BASE ADR
|
||||
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
|
||||
SDMTSWAP .EQU FALSE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011
|
||||
;
|
||||
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT
|
||||
PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTMODE .EQU LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
LPT0BASE .EQU $18 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $00 ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM)
|
||||
PPACNT .EQU 1 ; PPA: NUMBER OF PPA DEVICES (1-2)
|
||||
PPATRACE .EQU 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPAMODE .EQU PPAMODE_MG014 ; PPA: DRIVER MODE: PPAMODE_[NONE|SPP|MG014]
|
||||
PPA0BASE .EQU LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA
|
||||
PPA1BASE .EQU LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA
|
||||
;
|
||||
IMMENABLE .EQU FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
|
||||
IMMCNT .EQU 1 ; IMM: NUMBER OF IMM DEVICES (1-2)
|
||||
IMMTRACE .EQU 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
IMMMODE .EQU IMMMODE_MG014 ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014]
|
||||
IMM0BASE .EQU LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM
|
||||
IMM1BASE .EQU LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM
|
||||
;
|
||||
SYQENABLE .EQU FALSE ; SYQ: ENABLE IMM DISK DRIVER (SYQ.ASM)
|
||||
SYQCNT .EQU 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2)
|
||||
SYQTRACE .EQU 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SYQMODE .EQU IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
|
||||
SYQ0BASE .EQU LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
|
||||
SYQ1BASE .EQU LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
;
|
||||
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
|
||||
;
|
||||
SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
|
||||
SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD
|
||||
SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM]
|
||||
;
|
||||
AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
|
||||
AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC]
|
||||
;
|
||||
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
|
||||
;
|
||||
DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
|
||||
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
|
||||
DMAMODE .EQU DMAMODE_Z180 ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC)
|
||||
;
|
||||
YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER (MUTE STUB)
|
||||
VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76469s/CTC)
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -73,10 +73,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -225,6 +228,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -67,7 +67,7 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $0D ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
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
|
||||
@@ -243,6 +243,8 @@ PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "../UBIOS/ubios.inc"
|
||||
;
|
||||
;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_Z80RETRO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_Z80RETRO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -76,10 +76,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU $00 ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -200,6 +203,8 @@ PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -65,10 +65,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -171,6 +174,8 @@ PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -76,10 +76,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
@@ -182,6 +185,8 @@ PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
|
||||
@@ -31,12 +31,7 @@ BUFLEN .EQU 40 ; INPUT LINE LENGTH
|
||||
JP DSKY_ENTRY
|
||||
JP UART_ENTRY
|
||||
;
|
||||
#IF DSKYENABLE
|
||||
#DEFINE USEDELAY
|
||||
ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM
|
||||
#ELSE
|
||||
ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE
|
||||
#ENDIF
|
||||
ENA_XM .EQU TRUE ; INCLUDE XMODEM
|
||||
;
|
||||
ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION
|
||||
;
|
||||
@@ -149,10 +144,7 @@ SERIALCMDLOOP:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
INITIALIZE:
|
||||
;LD A,$C3 ; JP OPCODE
|
||||
;LD (0),A ; STORE AT $0000
|
||||
;LD (1),HL ; STORE AT $0001
|
||||
|
||||
;
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
; INSTALL UNA INVOCATION VECTOR FOR RST 08
|
||||
LD A,$C3 ; JP INSTRUCTION
|
||||
@@ -160,14 +152,6 @@ INITIALIZE:
|
||||
LD HL,($FFFE) ; UNA ENTRY VECTOR
|
||||
LD (9),HL ; STORE AT 0x0009
|
||||
#ENDIF
|
||||
|
||||
#IF DSKYENABLE
|
||||
LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO
|
||||
LD C,BF_SYSGET_CPUINFO ; HBIOS SUBFUNC=GET CPU INFO
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
LD A,L ; PUT SPEED IN MHZ IN ACCUM
|
||||
CALL DELAY_INIT
|
||||
#ENDIF
|
||||
;
|
||||
RET
|
||||
;
|
||||
@@ -1278,14 +1262,6 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):"
|
||||
;
|
||||
#IF DSKYENABLE
|
||||
;
|
||||
#DEFINE DSKY_KBD
|
||||
#IF (DSKYMODE == DSKYMODE_V1)
|
||||
#INCLUDE "dsky.asm"
|
||||
#ENDIF
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
#INCLUDE "dskyng.asm"
|
||||
#ENDIF
|
||||
;
|
||||
KY_PR .EQU KY_FW ; USE [FW] FOR [PR] (PORT READ)
|
||||
KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE)
|
||||
;
|
||||
@@ -1295,8 +1271,9 @@ KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE)
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DSKY_ENTRY:
|
||||
; SHOULD WE DO SOMETHING HERE TO CONFIRM THAT A DSKY
|
||||
; IS ACTUALLY OPERATING???
|
||||
LD SP,MON_STACK ; SET THE STACK POINTER
|
||||
;EI ; INTS OK NOW
|
||||
LD HL,DSKY_ENTRY ; RESTART ADDRESS
|
||||
CALL INITIALIZE
|
||||
;
|
||||
@@ -1305,12 +1282,7 @@ DSKY_ENTRY:
|
||||
; START UP THE SYSTEM WITH THE FRONT PANEL INTERFACE
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
CALL DSKY_PREINIT ; INITIALIZE DSKY
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_BEEP
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
;__COMMAND_PARSE______________________________________________________________
|
||||
;
|
||||
@@ -1320,17 +1292,12 @@ DSKY_ENTRY:
|
||||
FRONTPANELLOOP:
|
||||
LD HL,CPUUP ; SET POINTER TO CPU UP MSG
|
||||
CALL DSKY_SHOW ; DISPLAY UNENCODED
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTCMDKEYS
|
||||
CALL DSKY_L1ON
|
||||
#ENDIF
|
||||
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL KB_GET ; GET KEY FROM DSKY
|
||||
PUSH AF
|
||||
CALL DSKY_L1OFF
|
||||
#ENDIF
|
||||
POP AF
|
||||
|
||||
FRONTPANELLOOP1:
|
||||
CP KY_PR ; IS PORT READ?
|
||||
@@ -1366,11 +1333,7 @@ DOBOOT:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOPORTREAD:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETPORT ; GET PORT INTO A
|
||||
PORTREADLOOP:
|
||||
LD C,A ; STORE PORT IN "C"
|
||||
@@ -1393,11 +1356,7 @@ PORTREADGETKEY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOPORTWRITE:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETPORT ; GET PORT INTO A
|
||||
PORTWRITELOOP:
|
||||
LD L,A ; SAVE PORT NUM
|
||||
@@ -1419,18 +1378,10 @@ PORTWRITEGETKEY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOGO:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETADDR ; GET ADDRESS INTO HL
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
PUSH HL
|
||||
CALL DSKY_HIGHLIGHTKEYSOFF
|
||||
#ENDIF
|
||||
|
||||
PUSH HL ; EXEC ADR TO TOS
|
||||
LD HL,GOTO ; POINT TO "GO" MSG
|
||||
CALL INITBUF
|
||||
POP HL
|
||||
@@ -1450,11 +1401,7 @@ DOGO:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOEXAMINE:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETADDR ; GET ADDRESS INTO HL
|
||||
EXAMINELOOP:
|
||||
LD DE,DISPLAYBUF+0
|
||||
@@ -1470,11 +1417,7 @@ EXAMINELOOP:
|
||||
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL
|
||||
CALL PUTVALUE
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTFWDKEYS
|
||||
#ENDIF
|
||||
|
||||
EXAMINEGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP
|
||||
@@ -1492,11 +1435,7 @@ EXAMINEFW:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DODEPOSIT:
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTNUMKEYS
|
||||
#ENDIF
|
||||
|
||||
CALL GETADDR ; GET ADDRESS INTO HL
|
||||
DEPOSITLOOP:
|
||||
LD DE,DISPLAYBUF+0
|
||||
@@ -1513,11 +1452,7 @@ DEPOSITLOOP:
|
||||
LD DE,DISPLAYBUF+6 ; DISPLAY WRITTEN MEM VALUE
|
||||
CALL PUTVALUE ; ... WITHOUT DP'S
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
CALL DSKY_HIGHLIGHTFWDKEYS
|
||||
#ENDIF
|
||||
|
||||
DEPOSITGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP
|
||||
@@ -1684,6 +1619,7 @@ KB_GET:
|
||||
PUSH DE
|
||||
PUSH HL ; SAVE HL
|
||||
CALL DSKY_GETKEY ; GET A KEY
|
||||
LD A,E ; PUT KEY CODE IN A
|
||||
CP KY_EN ; ENTER?
|
||||
JR Z,KB_GET1 ; IF YES, RET TO CALLER
|
||||
CP $10 ; HEX DIGIT?
|
||||
@@ -1710,7 +1646,7 @@ INITBUF:
|
||||
;
|
||||
;__ENCDISPLAY_________________________________________________________________
|
||||
;
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF DECODED PER SEGDECODE TABLE
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF ENCODED PER SEGDECODE TABLE
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
ENCDISPLAY:
|
||||
@@ -1720,7 +1656,7 @@ ENCDISPLAY:
|
||||
;
|
||||
;__ENCBUF_____________________________________________________________________
|
||||
;
|
||||
; DISPLAY CONTENTS OF BUFFER AT HL DECODED PER SEGDECODE TABLE
|
||||
; DISPLAY CONTENTS OF BUFFER AT HL ENCODED PER SEGDECODE TABLE
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
ENCBUF:
|
||||
@@ -1736,7 +1672,6 @@ ENCBUF1:
|
||||
INC HL ; BUMP TO NEXT BYTE FOR NEXT PASS
|
||||
PUSH AF ; SAVE IT
|
||||
AND $80 ; ISOLATE HI BIT (DP)
|
||||
;XOR $80 ; FLIP IT
|
||||
LD C,A ; SAVE IN C
|
||||
POP AF ; RECOVER ORIGINAL
|
||||
AND $7F ; REMOVE HI BIT (DP)
|
||||
@@ -1757,36 +1692,62 @@ ENCBUF1:
|
||||
POP HL ; RESTORE HL
|
||||
RET
|
||||
;
|
||||
#IF (DSKYMODE == DSKYMODE_V1)
|
||||
;
|
||||
CPUUP .DB $04,$4B,$6E,$3B,$00,$3B,$6E,$04 ; "-CPU UP-" (RAW SEG)
|
||||
MSGBOOT .DB $7F,$1D,$1D,$0F,$A0,$00,$00,$00 ; "Boot! " (RAW SEG)
|
||||
ADDR .DB $17,$18,$19,$10,$00,$00,$00,$00 ; "Adr 0000" (ENCODED)
|
||||
PORT .DB $13,$14,$15,$16,$10,$10,$00,$00 ; "Port 00" (ENCODED)
|
||||
GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED)
|
||||
;
|
||||
;_HEX_7_SEG_DECODE_TABLE______________________________________________________
|
||||
;
|
||||
; SET BIT 7 TO DISPLAY W/ DECIMAL POINT
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
SEGDECODE:
|
||||
; DSKY INTERFACE ROUTINES
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
; POS $00 $01 $02 $03 $04 $05 $06 $07
|
||||
; GLYPH '0' '1' '2' '3' '4' '5' '6' '7'
|
||||
.DB $7B, $30, $6D, $75, $36, $57, $5F, $70
|
||||
DSKY_GETKEY:
|
||||
LD B,BF_DSKYGETKEY
|
||||
RST 08
|
||||
RET
|
||||
;
|
||||
; POS $08 $09 $0A $0B $0C $0D $0E $0F
|
||||
; GLYPH '8' '9' 'A' 'B' 'C' 'D' 'E' 'F'
|
||||
.DB $7F, $77, $7E, $1F, $4B, $3D, $4F, $4E
|
||||
DSKY_SHOW:
|
||||
LD B,BF_DSKYSHOWSEG
|
||||
RST 08
|
||||
RET
|
||||
;
|
||||
; POS $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A
|
||||
; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G'
|
||||
.DB $00, $04, $00, $6E, $1D, $0C, $0F, $7E, $3D, $0C, $5B
|
||||
DSKY_BEEP:
|
||||
LD B,BF_DSKYBEEP
|
||||
RST 08
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
DSKY_L1ON:
|
||||
LD E,1
|
||||
JR DSKY_STATLED
|
||||
DSKY_L1OFF:
|
||||
LD E,0
|
||||
DSKY_STATLED:
|
||||
LD B,BF_DSKYSTATLED
|
||||
LD D,0
|
||||
RST 08
|
||||
RET
|
||||
;
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
DSKY_PUTLED:
|
||||
LD B,BF_DSKYKEYLEDS
|
||||
RST 08
|
||||
RET
|
||||
;
|
||||
DSKY_HIGHLIGHTFWDKEYS:
|
||||
LD HL,DSKY_HIGHLIGHTFWDKEYLEDS
|
||||
JR DSKY_PUTLED
|
||||
;
|
||||
DSKY_HIGHLIGHTCMDKEYS:
|
||||
LD HL,DSKY_HIGHLIGHTCMDKEYLEDS
|
||||
JR DSKY_PUTLED
|
||||
;
|
||||
DSKY_HIGHLIGHTNUMKEYS:
|
||||
LD HL,DSKY_HIGHLIGHTNUMKEYLEDS
|
||||
JR DSKY_PUTLED
|
||||
;
|
||||
DSKY_HIGHLIGHTKEYSOFF:
|
||||
LD HL,DSKY_HIGHLIGHTKEYLEDSOFF
|
||||
JR DSKY_PUTLED
|
||||
;
|
||||
DSKY_HIGHLIGHTFWDKEYLEDS .DB $00,$00,$00,$30,$00,$00,$00,$00
|
||||
DSKY_HIGHLIGHTCMDKEYLEDS .DB $20,$00,$20,$3F,$00,$00,$00,$00
|
||||
DSKY_HIGHLIGHTNUMKEYLEDS .DB $1F,$3F,$1F,$30,$00,$00,$00,$00
|
||||
DSKY_HIGHLIGHTKEYLEDSOFF .DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||
;
|
||||
CPUUP .DB $40,$39,$73,$3E,$00,$3E,$73,$40 ; "-CPU UP-" (RAW SEG)
|
||||
MSGBOOT .DB $7F,$5C,$5C,$78,$82,$00,$00,$00 ; "Boot! " (RAW SEG)
|
||||
@@ -1813,31 +1774,8 @@ SEGDECODE:
|
||||
; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G'
|
||||
.DB $00, $40, $00, $73, $5C, $50, $78, $77, $5E, $50, $3D
|
||||
;
|
||||
|
||||
DSKY_HIGHLIGHTFWDKEYS:
|
||||
CALL DSKY_PUTLED
|
||||
.DB $00,$00,$00,$30,$00,$00,$00,$00
|
||||
RET
|
||||
|
||||
DSKY_HIGHLIGHTCMDKEYS:
|
||||
|
||||
CALL DSKY_PUTLED
|
||||
.DB $20,$00,$20,$3F,$00,$00,$00,$00
|
||||
RET
|
||||
|
||||
DSKY_HIGHLIGHTNUMKEYS:
|
||||
CALL DSKY_PUTLED
|
||||
.DB $1F,$3F,$1F,$30,$00,$00,$00,$00
|
||||
RET
|
||||
|
||||
DSKY_HIGHLIGHTKEYSOFF:
|
||||
|
||||
CALL DSKY_PUTLED
|
||||
.DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||
RET
|
||||
#ENDIF
|
||||
;
|
||||
DISPLAYBUF: .FILL 8,0
|
||||
DSKY_BUF .FILL 8,0
|
||||
;
|
||||
#ELSE
|
||||
;
|
||||
@@ -1949,130 +1887,6 @@ ADDHLA:
|
||||
INC H
|
||||
RET
|
||||
;
|
||||
; DELAY 16US (CPU SPEED COMPENSATED) INCUDING CALL/RET INVOCATION
|
||||
; REGISTER A AND FLAGS DESTROYED
|
||||
; NO COMPENSATION FOR Z180 MEMORY WAIT STATES
|
||||
; THERE IS AN OVERHEAD OF 3TS PER INVOCATION
|
||||
; IMPACT OF OVERHEAD DIMINISHES AS CPU SPEED INCREASES
|
||||
;
|
||||
; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US + 3TS DELAY
|
||||
; NOTE: CPUSCL MUST BE >= 1!
|
||||
;
|
||||
; EXAMPLE: 8MHZ CPU (DELAY GOAL IS 16US)
|
||||
; LOOP = ((6 * 16) - 5) = 91TS
|
||||
; TOTAL COST = (91 + 40) = 131TS
|
||||
; ACTUAL DELAY = (131 / 8) = 16.375US
|
||||
;
|
||||
; --- TOTAL COST = (LOOP COST + 40) TS -----------------+
|
||||
DELAY: ; 17TS (FROM INVOKING CALL) |
|
||||
LD A,(CPUSCL) ; 13TS |
|
||||
; |
|
||||
DELAY1: ; |
|
||||
; --- LOOP = ((CPUSCL * 16) - 5) TS ------------+ |
|
||||
DEC A ; 4TS | |
|
||||
#IF (BIOS == BIOS_WBW) ; | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | |
|
||||
OR A ; +4TS FOR Z180 | |
|
||||
#ENDIF ; | |
|
||||
#ENDIF ; | |
|
||||
JR NZ,DELAY1 ; 12TS (NZ) / 7TS (Z) | |
|
||||
; ----------------------------------------------+ |
|
||||
; |
|
||||
RET ; 10TS (RETURN) |
|
||||
;-------------------------------------------------------+
|
||||
;
|
||||
; DELAY 16US * DE (CPU SPEED COMPENSATED)
|
||||
; REGISTER DE, A, AND FLAGS DESTROYED
|
||||
; NO COMPENSATION FOR Z180 MEMORY WAIT STATES
|
||||
; THERE IS A 27TS OVERHEAD FOR CALL/RET PER INVOCATION
|
||||
; IMPACT OF OVERHEAD DIMINISHES AS DE AND/OR CPU SPEED INCREASES
|
||||
;
|
||||
; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US OUTER LOOP COST
|
||||
; NOTE: CPUSCL MUST BE > 0!
|
||||
;
|
||||
; EXAMPLE: 8MHZ CPU, DE=6250 (DELAY GOAL IS .1 SEC OR 100,000US)
|
||||
; INNER LOOP = ((16 * 6) - 5) = 91TS
|
||||
; OUTER LOOP = ((91 + 37) * 6250) = 800,000TS
|
||||
; ACTUAL DELAY = ((800,000 + 27) / 8) = 100,003US
|
||||
;
|
||||
; --- TOTAL COST = (OUTER LOOP + 27) TS ------------------------+
|
||||
VDELAY: ; 17TS (FROM INVOKING CALL) |
|
||||
; |
|
||||
; --- OUTER LOOP = ((INNER LOOP + 37) * DE) TS ---------+ |
|
||||
LD A,(CPUSCL) ; 13TS | |
|
||||
; | |
|
||||
VDELAY1: ; | |
|
||||
; --- INNER LOOP = ((CPUSCL * 16) - 5) TS ------+ | |
|
||||
#IF (BIOS == BIOS_WBW) ; | | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | | |
|
||||
OR A ; +4TS FOR Z180 | | |
|
||||
#ENDIF ; | | |
|
||||
#ENDIF ; | | |
|
||||
DEC A ; 4TS | | |
|
||||
JR NZ,VDELAY1 ; 12TS (NZ) / 7TS (Z) | | |
|
||||
; ----------------------------------------------+ | |
|
||||
; | |
|
||||
DEC DE ; 6TS | |
|
||||
#IF (BIOS == BIOS_WBW) ; | | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | |
|
||||
OR A ; +4TS FOR Z180 | |
|
||||
#ENDIF ; | |
|
||||
#ENDIF ; | |
|
||||
LD A,D ; 4TS | |
|
||||
OR E ; 4TS | |
|
||||
JP NZ,VDELAY ; 10TS | |
|
||||
;-------------------------------------------------------+ |
|
||||
; |
|
||||
RET ; 10TS (FINAL RETURN) |
|
||||
;---------------------------------------------------------------+
|
||||
;
|
||||
; DELAY ABOUT 0.5 SECONDS
|
||||
; 500000US / 16US = 31250
|
||||
;
|
||||
LDELAY:
|
||||
PUSH AF
|
||||
PUSH DE
|
||||
LD DE,31250
|
||||
CALL VDELAY
|
||||
POP DE
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; INITIALIZE DELAY SCALER BASED ON OPERATING CPU SPEED
|
||||
; ENTER WITH A = CPU SPEED IN MHZ
|
||||
;
|
||||
DELAY_INIT:
|
||||
CP 3 ; TEST FOR <= 2 (SPECIAL HANDLING)
|
||||
JR C,DELAY_INIT1 ; IF <= 2, SPECIAL PROCESSING
|
||||
SUB 2 ; ADJUST AS REQUIRED BY DELAY FUNCTIONS
|
||||
JR DELAY_INIT2 ; AND CONTINUE
|
||||
DELAY_INIT1:
|
||||
LD A,1 ; USE THE MIN VALUE OF 1
|
||||
DELAY_INIT2:
|
||||
LD (CPUSCL),A ; UPDATE CPU SCALER VALUE
|
||||
RET
|
||||
|
||||
#IF (CPUMHZ < 3)
|
||||
CPUSCL .DB 1 ; CPU SCALER MUST BE > 0
|
||||
#ELSE
|
||||
CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ
|
||||
#ENDIF
|
||||
;
|
||||
; SHORT DELAY FUNCTIONS. NO CLOCK SPEED COMPENSATION, SO THEY
|
||||
; WILL RUN LONGER ON SLOWER SYSTEMS. THE NUMBER INDICATES THE
|
||||
; NUMBER OF CALL/RET INVOCATIONS. A SINGLE CALL/RET IS
|
||||
; 27 T-STATES ON A Z80, 25 T-STATES ON A Z180
|
||||
;
|
||||
; ; Z80 Z180
|
||||
; ; ---- ----
|
||||
DLY64: CALL DLY32 ; 1728 1600
|
||||
DLY32: CALL DLY16 ; 864 800
|
||||
DLY16: CALL DLY8 ; 432 400
|
||||
DLY8: CALL DLY4 ; 216 200
|
||||
DLY4: CALL DLY2 ; 108 100
|
||||
DLY2: CALL DLY1 ; 54 50
|
||||
DLY1: RET ; 27 25
|
||||
;
|
||||
;
|
||||
;
|
||||
.FILL 16,0 ; SET MINIMUM STACK DEPTH
|
||||
|
||||
@@ -1,386 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; DSKY (DISPLAY AND KEYBOARD) ROUTINES
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE DSKY MAY COINCIDE ON THE SAME PPI BUS AS A PPISD. IT MAY NOT
|
||||
; SHARE A PPI BUS WITH A PPIDE. SEE PPI_BUS.TXT FOR MORE INFORMATION.
|
||||
;
|
||||
; LED SEGMENTS (BIT VALUES)
|
||||
;
|
||||
; +--40--+
|
||||
; 02 20
|
||||
; +--04--+
|
||||
; 08 10
|
||||
; +--01--+ 80
|
||||
;
|
||||
; DSKY SCAN CODES ARE ONE BYTE: CCRRRRRR
|
||||
; BITS 7-6 IDENTFY THE COLUMN OF THE KEY PRESSED
|
||||
; BITS 5-0 ARE A BITMAP, WITH A BIT ON TO INDICATE ROW OF KEY PRESSED
|
||||
;
|
||||
; ____PC0________PC1________PC2________PC3____
|
||||
; PB5 | $20 [D] $60 [E] $A0 [F] $E0 [BO]
|
||||
; PB4 | $10 [A] $50 [B] $90 [C] $D0 [GO]
|
||||
; PB3 | $08 [7] $48 [8] $88 [9] $C8 [EX]
|
||||
; PB2 | $04 [4] $44 [5] $84 [6] $C4 [DE]
|
||||
; PB1 | $02 [1] $42 [2] $82 [3] $C2 [EN]
|
||||
; PB0 | $01 [FW] $41 [0] $81 [BK] $C1 [CL]
|
||||
;
|
||||
;
|
||||
PPIA .EQU DSKYPPIBASE + 0 ; PORT A
|
||||
PPIB .EQU DSKYPPIBASE + 1 ; PORT B
|
||||
PPIC .EQU DSKYPPIBASE + 2 ; PORT C
|
||||
PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT
|
||||
;
|
||||
;__DSKY_INIT_________________________________________________________________________________________
|
||||
;
|
||||
; CONFIGURE PARALLEL PORT AND CLEAR KEYPAD BUFFER
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
DSKY_PREINIT:
|
||||
OR $FF ; SIGNAL TO WAIT FOR KEY RELEASE
|
||||
LD (DSKY_KEYBUF),A ; SET IT
|
||||
;
|
||||
; PPI PORT B IS NORMALLY SET TO INPUT, BUT HERE WE
|
||||
; TEMPORARILY SET IT TO OUTPUT. WHILE IN OUTPUT MODE, WE
|
||||
; WRITE A VALUE OF $FF WHICH WILL BE PERSISTED BY THE PPI
|
||||
; CHIP BUS HOLD CIRCUIT IF THERE IS NO DSKY PRESENT. SO,
|
||||
; WE CAN SUBSEQUENTLY TEST FOR PPIB=$FF TO SEE IF THERE IS
|
||||
; NO DSKY AND PREVENT PROBLEMS WITH PHANTOM DSKY KEY PRESSES.
|
||||
; IF A DSKY IS PRESENT, IT WILL SIMPLY OVERPOWER THE PPI
|
||||
; BUS HOLD CIRCUIT.
|
||||
LD A,$80 ; PA OUT, PB OUT, PC OUT
|
||||
OUT (PPIX),A
|
||||
LD A,$FF ; SET PPIB=$FF, BUS HOLD
|
||||
OUT (PPIB),A
|
||||
;
|
||||
LD A,$82 ; PA OUT, PB IN, PC OUT
|
||||
OUT (PPIX),A
|
||||
;
|
||||
;IN A,(PPIB) ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
;
|
||||
IN A,(PPIB) ; READ PPIB
|
||||
XOR $FF ; INVERT RESULT
|
||||
LD (DSKY_PRESENT),A ; SAVE AS PRESENT FLAG
|
||||
;
|
||||
DSKY_RESET:
|
||||
PUSH AF
|
||||
;
|
||||
LD A,$70 ; PPISD AND 7218 INACTIVE
|
||||
OUT (PPIC),A
|
||||
;
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
#IFDEF HBIOS
|
||||
;
|
||||
DSKY_INIT:
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("DSKY:$") ; FORMATTING
|
||||
;
|
||||
PRTS(" IO=0x$") ; FORMATTING
|
||||
LD A,DSKYPPIBASE ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
PRTS(" MODE=$") ; FORMATTING
|
||||
PRTS("V1$") ; PRINT DSKY TYPE
|
||||
;
|
||||
LD A,(DSKY_PRESENT) ; PRESENT?
|
||||
OR A ; SET FLAGS
|
||||
RET NZ ; YES, ALL DONE
|
||||
PRTS(" NOT PRESENT$") ; NOT PRESENT
|
||||
;
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IFDEF DSKY_KBD
|
||||
;
|
||||
KY_0 .EQU $00
|
||||
KY_1 .EQU $01
|
||||
KY_2 .EQU $02
|
||||
KY_3 .EQU $03
|
||||
KY_4 .EQU $04
|
||||
KY_5 .EQU $05
|
||||
KY_6 .EQU $06
|
||||
KY_7 .EQU $07
|
||||
KY_8 .EQU $08
|
||||
KY_9 .EQU $09
|
||||
KY_A .EQU $0A
|
||||
KY_B .EQU $0B
|
||||
KY_C .EQU $0C
|
||||
KY_D .EQU $0D
|
||||
KY_E .EQU $0E
|
||||
KY_F .EQU $0F
|
||||
KY_FW .EQU $10 ; FORWARD
|
||||
KY_BK .EQU $11 ; BACKWARD
|
||||
KY_CL .EQU $12 ; CLEAR
|
||||
KY_EN .EQU $13 ; ENTER
|
||||
KY_DE .EQU $14 ; DEPOSIT
|
||||
KY_EX .EQU $15 ; EXAMINE
|
||||
KY_GO .EQU $16 ; GO
|
||||
KY_BO .EQU $17 ; BOOT
|
||||
;
|
||||
;__DSKY_GETKEY_____________________________________________________________________________________
|
||||
;
|
||||
; WAIT FOR A DSKY KEYPRESS AND RETURN
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
DSKY_GETKEY:
|
||||
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
|
||||
OR A ; SET FLAGS
|
||||
JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT
|
||||
;
|
||||
CALL DSKY_STAT ; CHECK STATUS
|
||||
JR Z,DSKY_GETKEY ; LOOP IF NOTHING READY
|
||||
LD A,(DSKY_KEYBUF)
|
||||
LD B,24 ; SIZE OF DECODE TABLE
|
||||
LD C,0 ; INDEX
|
||||
LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE
|
||||
DSKY_GETKEY1:
|
||||
CP (HL) ; MATCH?
|
||||
JR Z,DSKY_GETKEY2 ; FOUND, DONE
|
||||
INC HL
|
||||
INC C ; BUMP INDEX
|
||||
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT
|
||||
DSKY_GETKEY1A:
|
||||
LD A,$FF ; NOT FOUND ERR, RETURN $FF
|
||||
RET
|
||||
DSKY_GETKEY2:
|
||||
LD A,$FF ; SET KEY BUF TO $FF
|
||||
LD (DSKY_KEYBUF),A ; DO IT
|
||||
; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND
|
||||
LD A,C ; RETURN INDEX VALUE
|
||||
RET
|
||||
;
|
||||
;__DSKY_STAT_________________________________________________________________________________________
|
||||
;
|
||||
; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
DSKY_STAT:
|
||||
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; ABORT WITH A=0 IF NOT THERE
|
||||
;
|
||||
LD A,(DSKY_KEYBUF) ; GET CURRENT BUF VAL
|
||||
CP $FF ; $FF MEANS WE ARE WAITING FOR PREV KEY TO BE RELEASED
|
||||
JR Z,DSKY_STAT1 ; CHECK FOR PREV KEY RELEASE
|
||||
OR A ; DO WE HAVE A SCAN CODE BUFFERED ALREADY?
|
||||
RET NZ ; IF SO, WE ARE DONE
|
||||
JR DSKY_STAT2 ; OTHERWISE, DO KEY CHECK
|
||||
|
||||
DSKY_STAT1:
|
||||
; WAITING FOR PREVIOUS KEY RELEASE
|
||||
CALL DSKY_KEY ; SCAN
|
||||
JR Z,DSKY_STAT2 ; IF ZERO, PREV KEY RELEASED, CONTINUE
|
||||
XOR A ; SIGNAL NO KEY PRESSED
|
||||
RET ; AND DONE
|
||||
|
||||
DSKY_STAT2:
|
||||
CALL DSKY_KEY ; SCAN
|
||||
LD (DSKY_KEYBUF),A ; SAVE RESULT
|
||||
RET ; RETURN WITH ZF SET APPROPRIATELY
|
||||
;
|
||||
;__DSKY_KEY_______________________________________________________________________________________
|
||||
;
|
||||
; CHECK FOR KEY PRESS W/ DEBOUNCE
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
DSKY_KEY:
|
||||
; IF PPIB VALUE IS $FF, THERE IS NO DSKY, SEE DSKY_INIT
|
||||
IN A,(PPIB)
|
||||
INC A
|
||||
RET Z
|
||||
|
||||
CALL DSKY_SCAN ; INITIAL KEY PRESS SCAN
|
||||
LD E,A ; SAVE INITIAL SCAN VALUE
|
||||
DSKY_KEY1:
|
||||
; MAX BOUNCE TIME FOR OMRON B3F IS 3MS
|
||||
PUSH DE ; SAVE DE
|
||||
LD DE,300 ; ~3MS DELAY
|
||||
CALL VDELAY ; DO IT
|
||||
CALL DSKY_SCAN ; REPEAT SCAN
|
||||
POP DE ; RESTORE DE
|
||||
RET Z ; IF NOTHING PRESSED, DONE
|
||||
CP E ; SAME?
|
||||
JR DSKY_KEY2 ; YES, READY TO RETURN
|
||||
LD E,A ; OTHERWISE, SAVE NEW SCAN VAL
|
||||
JR DSKY_KEY1 ; AND LOOP UNTIL STABLE VALUE
|
||||
DSKY_KEY2:
|
||||
OR A ; SET FLAGS BASED ON VALUE
|
||||
RET ; AND DONE
|
||||
;
|
||||
;__DSKY_SCAN______________________________________________________________________________________
|
||||
;
|
||||
; SCAN KEYPAD AND RETURN RAW SCAN CODE (RETURNS ZERO IF NO KEY PRESSED)
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
DSKY_SCAN:
|
||||
LD B,4 ; 4 COLUMNS
|
||||
LD C,$01 ; FIRST COLUMN
|
||||
LD E,0 ; INITIAL COL ID
|
||||
DSKY_SCAN1:
|
||||
LD A,C ; COL TO A
|
||||
OR $70 ; KEEP PPISD AND 7218 INACTIVE
|
||||
OUT (PPIC),A ; ACTIVATE COL
|
||||
IN A,(PPIB) ; READ ROW BITS
|
||||
AND $3F ; MASK, WE ONLY HAVE 6 ROWS, OTHERS UNDEFINED
|
||||
JR NZ,DSKY_SCAN2 ; IF NOT ZERO, GOT SOMETHING
|
||||
RLC C ; NEXT COL
|
||||
INC E ; BUMP COL ID
|
||||
DJNZ DSKY_SCAN1 ; LOOP THROUGH ALL COLS
|
||||
XOR A ; NOTHING FOUND, RETURN ZERO
|
||||
JP DSKY_RESET ; RETURN VIA RESET
|
||||
DSKY_SCAN2:
|
||||
RRC E ; MOVE COL ID
|
||||
RRC E ; ... TO HIGH BITS 6 & 7
|
||||
OR E ; COMBINE WITH ROW
|
||||
JP DSKY_RESET ; RETURN VIA RESET
|
||||
;
|
||||
;_KEYMAP_TABLE_____________________________________________________________________________________________________________
|
||||
;
|
||||
DSKY_KEYMAP:
|
||||
; POS $00 $01 $02 $03 $04 $05 $06 $07
|
||||
; KEY [0] [1] [2] [3] [4] [5] [6] [7]
|
||||
.DB $41, $02, $42, $82, $04, $44, $84, $08
|
||||
;
|
||||
; POS $08 $09 $0A $0B $0C $0D $0E $0F
|
||||
; KEY [8] [9] [A] [B] [C] [D] [E] [F]
|
||||
.DB $48, $88, $10, $50, $90, $20, $60, $A0
|
||||
;
|
||||
; POS $10 $11 $12 $13 $14 $15 $16 $17
|
||||
; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO]
|
||||
.DB $01, $81, $C1, $C2, $C4, $C8, $D0, $E0
|
||||
;
|
||||
; KBD WORKING STORAGE
|
||||
;
|
||||
DSKY_KEYBUF .DB 0
|
||||
;
|
||||
#ENDIF ; DSKY_KBD
|
||||
;
|
||||
;==================================================================================================
|
||||
; CONVERT 32 BIT BINARY TO 8 BYTE HEX SEGMENT DISPLAY
|
||||
;==================================================================================================
|
||||
;
|
||||
; HL: ADR OF 32 BIT BINARY
|
||||
; DE: ADR OF DEST LED SEGMENT DISPLAY BUFFER (8 BYTES)
|
||||
;
|
||||
DSKY_BIN2SEG:
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD B,4 ; 4 BYTES OF INPUT
|
||||
EX DE,HL
|
||||
DSKY_BIN2SEG1:
|
||||
LD A,(DE) ; FIRST NIBBLE
|
||||
SRL A
|
||||
SRL A
|
||||
SRL A
|
||||
SRL A
|
||||
PUSH HL
|
||||
LD HL,DSKY_HEXMAP
|
||||
CALL DSKY_ADDHLA
|
||||
LD A,(HL)
|
||||
POP HL
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,(DE) ; SECOND NIBBLE
|
||||
AND 0FH
|
||||
PUSH HL
|
||||
LD HL,DSKY_HEXMAP
|
||||
CALL DSKY_ADDHLA
|
||||
LD A,(HL)
|
||||
POP HL
|
||||
LD (HL),A
|
||||
INC HL
|
||||
INC DE ; NEXT BYTE
|
||||
DJNZ DSKY_BIN2SEG1
|
||||
POP DE
|
||||
POP HL
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
; DSKY SHOW BUFFER
|
||||
; HL: ADDRESS OF BUFFER
|
||||
;==================================================================================================
|
||||
;
|
||||
DSKY_SHOW:
|
||||
;;PUSH AF ; SAVE 7218 CONTROL BITS
|
||||
LD A,82H ; SETUP PPI
|
||||
OUT (PPIX),A
|
||||
CALL DSKY_COFF
|
||||
;;POP AF
|
||||
LD A,$F0 ; 7218 -> (DATA COMING, NO DECODE)
|
||||
OUT (PPIA),A
|
||||
CALL DSKY_STROBEC ; STROBE COMMAND
|
||||
LD B,DSKY_BUFLEN ; NUMBER OF DIGITS
|
||||
LD C,PPIA
|
||||
DSKY_HEXOUT2:
|
||||
;OUTI
|
||||
LD A,(HL)
|
||||
XOR $80 ; FIX DOT POLARITY
|
||||
OUT (C),A
|
||||
INC HL
|
||||
DEC B
|
||||
JP Z,DSKY_STROBE ; DO FINAL STROBE AND RETURN
|
||||
CALL DSKY_STROBE ; STROBE BYTE VALUE
|
||||
JR DSKY_HEXOUT2
|
||||
DSKY_STROBEC: ; COMMAND STROBE
|
||||
LD A,80H | 30H
|
||||
JP DSKY_STROBE0
|
||||
DSKY_STROBE: ; DATA STROBE
|
||||
LD A,00H | 30H ; SET WRITE STROBE
|
||||
DSKY_STROBE0:
|
||||
OUT (PPIC),A ; OUT TO PORTC
|
||||
CALL DLY2 ; DELAY
|
||||
DSKY_COFF:
|
||||
LD A,40H | 30H ; QUIESCE
|
||||
OUT (PPIC),A ; OUT TO PORTC
|
||||
; CALL DSKY_DELAY ; WAIT
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
; UTILTITY FUNCTIONS
|
||||
;==================================================================================================
|
||||
;
|
||||
DSKY_ADDHLA:
|
||||
ADD A,L
|
||||
LD L,A
|
||||
RET NC
|
||||
INC H
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
; STORAGE
|
||||
;==================================================================================================
|
||||
;
|
||||
; CODES FOR NUMERICS
|
||||
; HIGH BIT ALWAYS CLEAR TO SUPPRESS DECIMAL POINT
|
||||
; SET HIGH BIT TO SHOW DECIMAL POINT
|
||||
;
|
||||
DSKY_HEXMAP:
|
||||
.DB $7B ; 0
|
||||
.DB $30 ; 1
|
||||
.DB $6D ; 2
|
||||
.DB $75 ; 3
|
||||
.DB $36 ; 4
|
||||
.DB $57 ; 5
|
||||
.DB $5F ; 6
|
||||
.DB $70 ; 7
|
||||
.DB $7F ; 8
|
||||
.DB $77 ; 9
|
||||
.DB $7E ; A
|
||||
.DB $1F ; B
|
||||
.DB $4B ; C
|
||||
.DB $3D ; D
|
||||
.DB $4F ; E
|
||||
.DB $4E ; F
|
||||
;
|
||||
; SEG DISPLAY WORKING STORAGE
|
||||
;
|
||||
DSKY_PRESENT .DB 0
|
||||
;
|
||||
DSKY_BUF .FILL 8,0
|
||||
DSKY_BUFLEN .EQU $ - DSKY_BUF
|
||||
DSKY_HEXBUF .FILL 4,0
|
||||
DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF
|
||||
298
Source/HBIOS/esp.asm
Normal file
298
Source/HBIOS/esp.asm
Normal file
@@ -0,0 +1,298 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ESP32 DRIVER
|
||||
;
|
||||
; SUPPORTS DAN WERNER'S NHYODYNE (MBC) ESP32 MODULE
|
||||
; https://github.com/danwerner21/nhyodyne/tree/main/Z80ESP
|
||||
;==================================================================================================
|
||||
;
|
||||
; TODO:
|
||||
;
|
||||
ESP_IOBASE .EQU $9C
|
||||
ESP_0_IO .EQU ESP_IOBASE + 0
|
||||
ESP_1_IO .EQU ESP_IOBASE + 1
|
||||
ESP_STAT .EQU ESP_IOBASE + 2
|
||||
;
|
||||
; ESP STATUS PORT
|
||||
; MSB XX S S S S S S
|
||||
; | | | | | +- ESP0 READY OUTPUT
|
||||
; | | | | +--- ESP0 BUSY
|
||||
; | | | +----- ESP0 SPARE
|
||||
; | | +------- ESP1 READY OUTPUT
|
||||
; | +--------- ESP1 BUSY
|
||||
; +----------- ESP1 SPARE
|
||||
;
|
||||
ESP_0_RDY .EQU %00000001
|
||||
ESP_0_BUSY .EQU %00000010
|
||||
ESP_0_SPARE .EQU %00000100
|
||||
ESP_1_RDY .EQU %00001000
|
||||
ESP_1_BUSY .EQU %00010000
|
||||
ESP_1_SPARE .EQU %00100000
|
||||
;
|
||||
; COMMAND OPCODES
|
||||
;
|
||||
ESP_CMD_NOP .EQU 0 ; NO OP
|
||||
ESP_CMD_COUT .EQU 1 ; CHAR OUT
|
||||
ESP_CMD_SOUT .EQU 2 ; STRING OUT
|
||||
ESP_CMD_KIN .EQU 3 ; KEY IN
|
||||
ESP_CMD_KST .EQU 4 ; KBD BUF STATUS
|
||||
ESP_CMD_DISC .EQU $FF ; DISCOVER
|
||||
;
|
||||
; GLOBAL ESP INITIALIZATION
|
||||
;
|
||||
ESP_INIT:
|
||||
;
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("ESP: IO=0x$")
|
||||
LD A,ESP_IOBASE
|
||||
CALL PRTHEXBYTE
|
||||
;
|
||||
CALL ESP_DETECT
|
||||
LD DE,ESP_STR_NOHW
|
||||
JP NZ,WRITESTR
|
||||
;
|
||||
; PRINT FIRMWARE VERSION
|
||||
PRTS(" F/W=$")
|
||||
CALL ESP_PRTVER
|
||||
;
|
||||
CALL ESPCON_INIT ; CONSOLE INITIALIZATION
|
||||
;
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
; ESP32 INTERFACE FUNCTIONS
|
||||
;==================================================================================================
|
||||
;
|
||||
ESP_DETECT:
|
||||
CALL ESP_CLR ; CLEAR ANY PENDING DATA
|
||||
RET NZ ; IF FAILS, ASSUME NOT PRESENT
|
||||
LD A,ESP_CMD_DISC ; DISCOVER COMMAND
|
||||
CALL ESP_OUT ; SEND IT
|
||||
LD DE,10 ; DELAY 160US
|
||||
CALL VDELAY ; ... TO ENSURE OUTPUT RDY SET
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
AND ESP_0_RDY ; ISOLATE OUTPUT READY BIT
|
||||
XOR ESP_0_RDY ; INVERT SO 0=FOUND
|
||||
RET ; DONE
|
||||
;
|
||||
; CLEAR ESP INPUT QUEUE
|
||||
;
|
||||
ESP_CLR:
|
||||
LD B,0 ; MAX CHARS TO READ
|
||||
ESP_CLR0:
|
||||
CALL ESP_WTNBSY ; WAIT TILL NOT BUSY
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
AND ESP_0_RDY ; IS THERE MORE DATA?
|
||||
RET Z ; IF NOT, DONE
|
||||
IN A,(ESP_0_IO) ; GET CHAR
|
||||
DJNZ ESP_CLR0 ; LOOP TILL DONE
|
||||
OR $FF ; SIGNAL FAILURE
|
||||
RET
|
||||
;
|
||||
; PRINT ESP VERSION STRING TO CONSOLE
|
||||
;
|
||||
ESP_PRTVER:
|
||||
CALL ESP_CLR ; CLEAR ANY PENDING DATA
|
||||
LD A,ESP_CMD_DISC ; DISCOVER COMMAND
|
||||
CALL ESP_OUT ; SEND IT
|
||||
CALL ESP_WTRDY ; WAIT FOR READY TO OUTPUT
|
||||
ESP_PRTVER1:
|
||||
CALL ESP_WTNBSY ; WAIT TILL NOT BUSY
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
AND ESP_0_RDY ; ISOLATE OUTPUT READY BIT
|
||||
RET Z ; DONE IF NOTHING READY
|
||||
CALL ESP_IN ; GET NEXT CHAR
|
||||
CALL COUT ; PRINT CHAR
|
||||
JR ESP_PRTVER1 ; LOOP
|
||||
;
|
||||
; SEND BYTE TO ESP
|
||||
;
|
||||
ESP_OUT:
|
||||
PUSH AF ; SAVE VALUE
|
||||
CALL ESP_WTNBSY ; WAIT TILL NOT BUSY
|
||||
POP AF ; POP VALUE
|
||||
OUT (ESP_0_IO),A ; SEND CHARACTER
|
||||
JR ESP_WTBSY ; RETURN VIA WTBSY
|
||||
;
|
||||
; GET BYTE FROM ESP (BLOCKING)
|
||||
;
|
||||
ESP_INWAIT:
|
||||
CALL ESP_WTNBSY ; WAIT TILL NOT BUSY
|
||||
CALL ESP_WTRDY ; WAIT FOR READY TO OUTPUT
|
||||
; FALL THRU (GET CHAR VIA ESP_IN)
|
||||
;
|
||||
; GET BYTE FROM ESP (NON BLOCKING)
|
||||
;
|
||||
ESP_IN:
|
||||
CALL ESP_WTNBSY ; WAIT TILL NOT BUSY
|
||||
ESP_IN1:
|
||||
IN A,(ESP_0_IO) ; GET BYTE
|
||||
PUSH AF ; SAVE VALUE
|
||||
CALL ESP_WTBSY ; WAIT TILL BUSY
|
||||
POP AF ; RESTORE VALUE
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; WAIT FOR ESP TO BE NOT BUSY
|
||||
;
|
||||
ESP_WTNBSY:
|
||||
LD B,0 ; MAX TRIES
|
||||
ESP_WTNBSY1:
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
AND ESP_0_BUSY ; IS ESP BUSY?
|
||||
RET Z ; RETURN IF NOT BUSY
|
||||
DJNZ ESP_WTNBSY1 ; ELSE LOOP
|
||||
OR $FF ; SIGNAL TIMEOUT
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; WAIT FOR ESP TO BE BUSY
|
||||
;
|
||||
ESP_WTBSY:
|
||||
LD B,20 ; MAX TRIES
|
||||
ESP_WTBSY1:
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
AND ESP_0_BUSY ; IS ESP BUSY?
|
||||
XOR ESP_0_BUSY ; INVERT
|
||||
RET Z ; RETURN IF BUSY
|
||||
DJNZ ESP_WTBSY1 ; ELSE LOOP
|
||||
OR $FF ; SIGNAL TIMEOUT
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; WAIT FOR ESP TO BE READY TO OUTPUT
|
||||
;
|
||||
ESP_WTRDY:
|
||||
LD B,0 ; MAX TRIES
|
||||
ESP_WTRDY1:
|
||||
IN A,(ESP_STAT) ; GET STATUS
|
||||
AND ESP_0_RDY ; IS ESP READY TO OUTPUT
|
||||
XOR ESP_0_RDY ; INVERT, 0=READY
|
||||
RET Z ; RETURN IF READY
|
||||
DJNZ ESP_WTRDY1 ; ELSE LOOP
|
||||
OR $FF ; SIGNAL TIMEOUT
|
||||
RET ; AND RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
ESP_STR_NOHW .TEXT " NOT PRESENT$"
|
||||
ESP_STR_UPGRADE .TEXT " !!!UPGRADE REQUIRED!!!$"
|
||||
;
|
||||
;==================================================================================================
|
||||
; ESP32 CONSOLE DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
;
|
||||
ESPCON_ROWS .EQU 25 ; VGA DISPLAY ROWS
|
||||
ESPCON_COLS .EQU 80 ; VGA DISPLAY COLS
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_INIT:
|
||||
;
|
||||
CALL NEWLINE
|
||||
PRTS("ESPCON:$")
|
||||
;
|
||||
; DISPLAY CONSOLE DIMENSIONS
|
||||
CALL PC_SPACE
|
||||
LD A,ESPCON_COLS
|
||||
CALL PRTDECB
|
||||
LD A,'X'
|
||||
CALL COUT
|
||||
LD A,ESPCON_ROWS
|
||||
CALL PRTDECB
|
||||
CALL PRTSTRD
|
||||
.TEXT " TEXT (ANSI)$"
|
||||
;
|
||||
; ADD OURSELVES TO CIO DISPATCH TABLE
|
||||
;
|
||||
LD D,0 ; PHYSICAL UNIT IS ZERO
|
||||
LD E,CIODEV_ESPCON ; DEVICE TYPE
|
||||
LD BC,ESPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; DRIVER FUNCTION TABLE
|
||||
;
|
||||
ESPCON_FNTBL:
|
||||
.DW ESPCON_IN
|
||||
.DW ESPCON_OUT
|
||||
.DW ESPCON_IST
|
||||
.DW ESPCON_OST
|
||||
.DW ESPCON_INITDEV
|
||||
.DW ESPCON_QUERY
|
||||
.DW ESPCON_DEVICE
|
||||
#IF (($ - ESPCON_FNTBL) != (CIO_FNCNT * 2))
|
||||
.ECHO "*** INVALID ESPCON FUNCTION TABLE ***\n"
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_IN:
|
||||
CALL ESPCON_IST
|
||||
JR Z,ESPCON_IN
|
||||
LD A,ESP_CMD_KIN ; KBD INPUT
|
||||
CALL ESP_OUT ; SEND CMD OPCODE
|
||||
CALL ESP_INWAIT ; GET KEY
|
||||
LD E,A ; PUT IN E
|
||||
XOR A ; SIGNAL SUCCES
|
||||
RET ; AND DONE
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_IST:
|
||||
LD A,ESP_CMD_KST ; KBD BUF STATUS
|
||||
CALL ESP_OUT ; SEND CMD OPCODE
|
||||
CALL ESP_INWAIT ; GET BUF SIZE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; AND DONE
|
||||
OR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_OUT:
|
||||
PUSH DE
|
||||
LD A,ESP_CMD_COUT ; CHAR OUT OPCODE
|
||||
CALL ESP_OUT
|
||||
POP DE
|
||||
LD A,E
|
||||
CALL ESP_OUT ; SEND CHAR VALUE
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_OST:
|
||||
OR $FF ; SIGNAL OUTPUT QUEUE READY
|
||||
RET ; RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_INITDEV:
|
||||
SYSCHKERR(ERR_NOTIMPL)
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_QUERY:
|
||||
LD DE,0
|
||||
LD HL,0
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
ESPCON_DEVICE:
|
||||
LD D,CIODEV_ESPCON ; D := DEVICE TYPE
|
||||
LD E,0 ; E := DEVICE NUM, ALWAYS 0
|
||||
LD C,$BF ; C := DEVICE TYPE, 0xBF IS PROP TERM
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,ESP_IOBASE ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;=============================================================================
|
||||
; DATA STORAGE
|
||||
;=============================================================================
|
||||
;
|
||||
@@ -231,12 +231,12 @@ FDMM_8 .DB FDM111, $FF
|
||||
; FDT_ VALUES DEFINED IN STD.ASM
|
||||
;
|
||||
FD_DEVATTR:
|
||||
.DB %11100000 ; DRIVE TYPE NONE
|
||||
.DB %11010100 ; DRIVE TYPE 3.5 DD
|
||||
.DB %11011000 ; DRIVE TYPE 3.5 HD
|
||||
.DB %10110100 ; DRIVE TYPE 5.25 DD
|
||||
.DB %10111000 ; DRIVE TYPE 5.25 HD
|
||||
.DB %10010100 ; DRIVE TYPE 8
|
||||
.DB %11000000 ; DRIVE TYPE NONE
|
||||
.DB %11010101 ; DRIVE TYPE 3.5 DD
|
||||
.DB %11010110 ; DRIVE TYPE 3.5 HD
|
||||
.DB %11001101 ; DRIVE TYPE 5.25 DD
|
||||
.DB %11001110 ; DRIVE TYPE 5.25 HD
|
||||
.DB %11000101 ; DRIVE TYPE 8
|
||||
;
|
||||
; FDC COMMANDS
|
||||
;
|
||||
@@ -1130,9 +1130,11 @@ FD_RETRY1:
|
||||
FD_START:
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,4
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACTCHS ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
LD A,(FCD_FDCRDY)
|
||||
@@ -1202,9 +1204,6 @@ FD_RUN1:
|
||||
RET
|
||||
|
||||
FD_RUNCHK:
|
||||
;;#IF (DSKYENABLE)
|
||||
;; CALL FD_DSKY
|
||||
;;#ENDIF
|
||||
|
||||
FD_RUNEXIT:
|
||||
LD A,(FST_RC)
|
||||
@@ -1221,23 +1220,6 @@ FD_RUNERR:
|
||||
|
||||
JP FD_RETRC
|
||||
|
||||
;;#IF (DSKYENABLE)
|
||||
;;FD_DSKY:
|
||||
;; LD HL,DSKY_HEXBUF
|
||||
;; LD A,(FCD_C)
|
||||
;; LD (HL),A
|
||||
;; INC HL
|
||||
;; LD A,(FCD_R)
|
||||
;; LD (HL),A
|
||||
;; INC HL
|
||||
;; LD A,(FRB_ST0)
|
||||
;; LD (HL),A
|
||||
;; INC HL
|
||||
;; LD A,(FRB_ST1)
|
||||
;; LD (HL),A
|
||||
;; CALL DSKY_HEXOUT
|
||||
;; RET
|
||||
;;#ENDIF
|
||||
;
|
||||
;===============================================================================
|
||||
; FLOPPY DISK CONTROL SERVICES (PHYSICAL DEVICE CONTROL FOR FDC HARDWARE)
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
; - decode.asm
|
||||
; - encode.asm
|
||||
; - [xio|mio].asm
|
||||
; - [dsky.asm|dskyng.asm]
|
||||
; - unlzsa2s.asm
|
||||
;
|
||||
; INCLUDE GENERIC STUFF
|
||||
@@ -248,7 +247,8 @@ RTCDEF .SET RTCDEF | %00001000 ; INITIAL SPEED LOW
|
||||
RET
|
||||
.FILL (038H - $),0FFH ; RST 38 / IM1 INT
|
||||
#IF (INTMODE == 1)
|
||||
JP INT_IM1 ; JP TO INTERRUPT HANDLER IN HI MEM
|
||||
CALL HBX_INT ; HANDLE IM1 INTERRUPTS
|
||||
.DB $10 << 2 ; USE SPECIAL VECTOR #16
|
||||
#ELSE
|
||||
RET ; RETURN W/ INTS DISABLED
|
||||
#ENDIF
|
||||
@@ -813,8 +813,6 @@ HBX_INTSTK .EQU $
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((INTMODE == 2) | (INTMODE == 3))
|
||||
;
|
||||
; HBIOS INTERRUPT SLOT ASSIGNMENTS
|
||||
;
|
||||
; # Z80 Z180
|
||||
@@ -873,19 +871,9 @@ HBX_IV0D: CALL HBX_INT \ .DB $0D << 2
|
||||
HBX_IV0E: CALL HBX_INT \ .DB $0E << 2
|
||||
HBX_IV0F: CALL HBX_INT \ .DB $0F << 2
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
INT_IM1:
|
||||
#IF (INTMODE == 1)
|
||||
CALL HBX_INT
|
||||
.DB $00
|
||||
#ELSE
|
||||
RETI ; UNEXPECTED INT, RET W/ INTS LEFT DISABLED
|
||||
#ENDIF
|
||||
HBX_INT: ; COMMON INTERRUPT ROUTING CODE
|
||||
;
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
HBX_INT: ; COMMON INTERRUPT ROUTING CODE
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
@@ -967,7 +955,11 @@ HBX_INT_SP .EQU $ - 2
|
||||
RETI ; AND RETURN
|
||||
;
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
#ELSE
|
||||
;
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; SMALL TEMPORARY STACK FOR USE BY HBX_BNKCPY
|
||||
@@ -1039,34 +1031,6 @@ HB_STACK .EQU $ ; TOP OF HBIOS STACK
|
||||
; INTERRUPT VECTOR TABLE (MUST START AT PAGE BOUNDARY!!!)
|
||||
;==================================================================================================
|
||||
;
|
||||
; IM1 INTERRUPTS ARRIVE HERE AFTER BANK SWITCH TO HBIOS BANK
|
||||
; LIST OF IM1 INT CALLS IS BUILT DYNAMICALLY BELOW
|
||||
; SEE HB_ADDIM1 ROUTINE
|
||||
; EACH ENTRY WILL LOOK LIKE:
|
||||
; CALL XXXX ; CALL INT HANDLER
|
||||
; RET NZ ; RETURN IF HANDLED
|
||||
;
|
||||
; NOTE THAT THE LIST IS INITIALLY FILLED WITH CALLS TO HB_BADINT.
|
||||
; AS THE TABLE IS POPULATED, THE ADDRESS OF HB_BADINT IS OVERLAID
|
||||
; WITH THE ADDRESS OF A REAL INTERRUPT HANDLER.
|
||||
;
|
||||
; THERE IS ROOM FOR 8 ENTRIES PLUS A FINAL CALL TO HB_BADINT.
|
||||
;
|
||||
#IF (INTMODE < 2)
|
||||
;
|
||||
HB_IVT:
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; IM2 INTERRUPTS ARRIVE HERE AFTER BANK SWITCH TO HBIOS BANK
|
||||
; THE LIST OF JP TABLE ENTRIES MATCHES THE IM2 VECTORS ONE FOR
|
||||
; ONE. ANY CALL TO THE PRIMARY IVT (HBX_IVT) WILL BE MAPPED TO
|
||||
@@ -1080,8 +1044,6 @@ HB_IVT:
|
||||
; NOTE THAT EACH ENTRY HAS A FILLER BYTE OF VALUE ZERO. THIS BYTE
|
||||
; HAS NO FUNCTION. IT IS JUST USED TO MAKE ENTRIES AN EVEN 4 BYTES.
|
||||
;
|
||||
#IF ((INTMODE == 2) | (INTMODE == 3))
|
||||
;
|
||||
HB_IVT:
|
||||
HB_IVT00: JP HB_BADINT \ .DB 0
|
||||
HB_IVT01: JP HB_BADINT \ .DB 0
|
||||
@@ -1099,8 +1061,31 @@ HB_IVT0C: JP HB_BADINT \ .DB 0
|
||||
HB_IVT0D: JP HB_BADINT \ .DB 0
|
||||
HB_IVT0E: JP HB_BADINT \ .DB 0
|
||||
HB_IVT0F: JP HB_BADINT \ .DB 0
|
||||
HB_IVT10: JP HB_IM1INT \ .DB 0
|
||||
;
|
||||
#ENDIF
|
||||
; IM1 INTERRUPTS ARRIVE HERE AFTER BANK SWITCH TO HBIOS BANK
|
||||
; LIST OF IM1 INT CALLS IS BUILT DYNAMICALLY BELOW
|
||||
; SEE HB_ADDIM1 ROUTINE
|
||||
; EACH ENTRY WILL LOOK LIKE:
|
||||
; CALL XXXX ; CALL INT HANDLER
|
||||
; RET NZ ; RETURN IF HANDLED
|
||||
;
|
||||
; NOTE THAT THE LIST IS INITIALLY FILLED WITH CALLS TO HB_BADINT.
|
||||
; AS THE TABLE IS POPULATED, THE ADDRESS OF HB_BADINT IS OVERLAID
|
||||
; WITH THE ADDRESS OF A REAL INTERRUPT HANDLER.
|
||||
;
|
||||
; THERE IS ROOM FOR 8 ENTRIES PLUS A FINAL CALL TO HB_BADINT.
|
||||
;
|
||||
HB_IM1INT:
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
CALL HB_BADINT \ RET NZ
|
||||
;
|
||||
;==================================================================================================
|
||||
; SYSTEM INITIALIZATION
|
||||
@@ -1388,6 +1373,36 @@ Z280_INITZ:
|
||||
LD (HB_CURBNK),A ; RESTORE HB_CURBNK
|
||||
#ENDIF
|
||||
;
|
||||
; S100 ROM CONTAINS A HARDWARE LEVEL MONITOR IN BANK ID 3 OF ROM.
|
||||
; IF PORT $75 BIT 1 IS SET (SET IS ZERO), THEN WE IMMEDIATELY
|
||||
; TRANSITION TO THIS MONITOR. PRIOR TO THE TRANSITION, WE ALSO
|
||||
; CHECK THE VALUE IN THE Z180 RELOAD REGISTER LOW. IF IT IS ASCII 'W',
|
||||
; THEN IT MEANS THE S100 MONITOR IS ATTEMPTING TO REBOOT INTO ROMWBW
|
||||
; HBIOS.
|
||||
;
|
||||
#IF ((PLATFORM == PLT_S100) & TRUE)
|
||||
; CHECK S100 BOARD DIP SWITCH, BIT 1
|
||||
IN A,($75) ; READ SWITCHES
|
||||
BIT 1,A ; CHECK BIT 1
|
||||
JR NZ,S100MON_SKIP ; IF NOT SET, CONT ROMWBW BOOT
|
||||
;
|
||||
; CHECK RELOAD REGISTER LOW FOR SPECIAL VALUE
|
||||
IN0 A,(Z180_RLDR1L) ; GET RELOAD REG 1 LOW
|
||||
CP 'W' ; CHECK FOR SPECIAL VALUE
|
||||
JR Z,S100MON_SKIP ; IF SO, DO ROMWBW BOOT
|
||||
;
|
||||
; LAUNCH S100 MONITOR FROM ROM BANK 3
|
||||
LD A,BID_IMG2 ; S100 MONITOR BANK
|
||||
LD IX,0 ; EXECUTION RESUMES HERE
|
||||
CALL HBX_BNKCALL ; CONTINUE IN RAM BANK, DO NOT RETURN
|
||||
HALT ; WE SHOULD NOT COME BACK HERE!
|
||||
;
|
||||
S100MON_SKIP:
|
||||
; RESTORE DEFAULT RELOAD REGISTER VALUE (PROBABLY NOT NEEDED)
|
||||
XOR A
|
||||
OUT0 (Z180_RLDR1L),A
|
||||
#ENDIF
|
||||
;
|
||||
; SAVE CURRENT BANKID
|
||||
;
|
||||
; THIS IS NOT GOING TO WORK IF THE APP BOOT IMAGE IS LOADED
|
||||
@@ -1712,11 +1727,14 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
|
||||
;
|
||||
; MAKE SURE IM1 INT VECTOR IS RIGHT
|
||||
#IF (INTMODE == 1)
|
||||
; JP INT_IM1 IF INTERRUPT MODE ACTIVE
|
||||
LD A,$C3
|
||||
; CALL HBX_INT ; HANDLE IM1 INTERRUPTS
|
||||
; .DB $10 << 2 ; USE SPECIAL VECTOR #16
|
||||
LD A,$CD ; CALL OPCODE
|
||||
LD ($0038),A
|
||||
LD HL,INT_IM1
|
||||
LD HL,HBX_INT ; ADDRESS
|
||||
LD ($0039),HL
|
||||
LD A,$10 << 2 ; IM1 VECTOR
|
||||
LD ($003B),A
|
||||
#ELSE
|
||||
; RETI ($ED, $4D) IF NON-INTERRUPT MODE
|
||||
LD HL,$0038
|
||||
@@ -1810,8 +1828,8 @@ SAVE_REC_M:
|
||||
;
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
;
|
||||
PRTS("DEBUG-IVT$")
|
||||
LD DE,HB_IVT
|
||||
PRTS("DEBUG-IM1INT$")
|
||||
LD DE,HB_IM1INT
|
||||
CALL DUMP_BUFFER
|
||||
CALL NEWLINE
|
||||
;
|
||||
@@ -1878,6 +1896,35 @@ HB_CPU1:
|
||||
CALL DSRTC_PREINIT
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (ICMENABLE)
|
||||
CALL ICM_PREINIT
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (PKDENABLE)
|
||||
CALL PKD_PREINIT
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_HBVER + 5
|
||||
LD A,(DSKY_HEXMAP + RMJ)
|
||||
OR $80
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,(DSKY_HEXMAP + RMN)
|
||||
OR $80
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,(DSKY_HEXMAP + RUP)
|
||||
LD (HL),A
|
||||
LD HL,MSG_HBVER
|
||||
LD B,BF_DSKYSHOWSEG
|
||||
CALL DSKY_DISPATCH
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SKZENABLE)
|
||||
;
|
||||
; SET THE SK Z80-512K UART CLK2 DIVIDER AS
|
||||
@@ -2088,7 +2135,7 @@ HB_CPU3:
|
||||
;
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
;
|
||||
#IF (INTMODE == 2)
|
||||
#IF (INTMODE > 0)
|
||||
;
|
||||
; MASK ALL EXTERNAL INTERRUPTS FOR NOW
|
||||
LD A,$01 ; INT0 ENABLED, INT1-2 DISABLED
|
||||
@@ -2211,22 +2258,6 @@ NOT_REC_M0:
|
||||
#ENDIF
|
||||
CALL CALLLIST ; PROCESS THE PRE-INIT CALL TABLE
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_HBVER + 5
|
||||
LD A,(DSKY_HEXMAP + RMJ)
|
||||
OR $80
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,(DSKY_HEXMAP + RMN)
|
||||
OR $80
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,(DSKY_HEXMAP + RUP)
|
||||
LD (HL),A
|
||||
LD HL,MSG_HBVER
|
||||
CALL DSKY_SHOW
|
||||
#ENDIF
|
||||
;
|
||||
#IF FALSE
|
||||
;
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
@@ -2315,8 +2346,8 @@ NXTMIO: LD A,(HL)
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
;
|
||||
CALL NEWLINE2
|
||||
PRTS("DEBUG+IVT$")
|
||||
LD DE,HB_IVT
|
||||
PRTS("DEBUG+IM1INT$")
|
||||
LD DE,HB_IM1INT
|
||||
CALL DUMP_BUFFER
|
||||
;
|
||||
; TEST DEBUG ***************************************************************************************
|
||||
@@ -2741,6 +2772,7 @@ HB_WDZ:
|
||||
;
|
||||
LD A,(CB_CONDEV) ; GET CURRENT CONSOLE
|
||||
LD (HB_NEWCON),A ; AND INIT NEW CONSOLE VAR
|
||||
;
|
||||
#IF CRTACT
|
||||
;
|
||||
; BIOS IS CONFIGURED TO AUTO ACTIVATE CRT DEVICE. FIRST,
|
||||
@@ -2764,11 +2796,6 @@ HB_WDZ:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; THIS IS A GOOD PLACE TO DETERMINE IF FRONT PANEL HARDWARE REALLY
|
||||
; EXISTS.
|
||||
;
|
||||
CALL FP_DETECT
|
||||
;
|
||||
#IF (FPSW_ENABLE)
|
||||
;
|
||||
; IF WE HAVE FRONT PANEL SWITCHES, THIS IS THE RIGHT PLACE TO HANDLE
|
||||
@@ -2782,8 +2809,9 @@ HB_WDZ:
|
||||
LD A,FPSW_IO
|
||||
CALL PRTHEXBYTE
|
||||
;
|
||||
; THE EXISTENCE OF THE FP WAS TESTED EARLIER. IF IT DOESN'T
|
||||
; EXIST, BAIL OUT.
|
||||
CALL FP_DETECT
|
||||
;
|
||||
; IF FP DOESN'T EXIST, BAIL OUT.
|
||||
LD A,(FPSW_ACTIVE) ; GET FP EXISTENCE FLAG
|
||||
OR A ; SET FLAGS
|
||||
JR NZ,HB_FP1 ; IF WE HAVE ONE, CONTINUE
|
||||
@@ -3078,9 +3106,6 @@ HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2)
|
||||
;==================================================================================================
|
||||
;
|
||||
HB_PCINITTBL:
|
||||
#IF (DSKYENABLE)
|
||||
.DW DSKY_PREINIT
|
||||
#ENDIF
|
||||
#IF (ASCIENABLE)
|
||||
.DW ASCI_PREINIT
|
||||
#ENDIF
|
||||
@@ -3128,7 +3153,14 @@ HB_INITTBL:
|
||||
.DW CTC_INIT
|
||||
#ENDIF
|
||||
#IF (DSKYENABLE)
|
||||
.DW DSKY_INIT
|
||||
#IF (ICMENABLE)
|
||||
.DW ICM_INIT
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#IF (DSKYENABLE)
|
||||
#IF (PKDENABLE)
|
||||
.DW PKD_INIT
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#IF (AY38910ENABLE)
|
||||
.DW AY38910_INIT ; AUDIBLE INDICATOR OF BOOT START
|
||||
@@ -3212,9 +3244,6 @@ HB_INITTBL:
|
||||
#IF (VRCENABLE)
|
||||
.DW VRC_INIT
|
||||
#ENDIF
|
||||
;#IF (DSKYENABLE)
|
||||
; .DW DSKY_INIT
|
||||
;#ENDIF
|
||||
#IF (DMAENABLE)
|
||||
.DW DMA_INIT
|
||||
#ENDIF
|
||||
@@ -3254,6 +3283,9 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (ESPENABLE)
|
||||
.DW ESP_INIT
|
||||
#ENDIF
|
||||
;
|
||||
HB_INITTBLLEN .EQU (($ - HB_INITTBL) / 2)
|
||||
;
|
||||
@@ -3322,8 +3354,8 @@ HB_DISPATCH1:
|
||||
JP C,DIO_DISPATCH
|
||||
CP BF_RTC + $10 ; $20-$2F: REAL TIME CLOCK (RTC)
|
||||
JP C,RTC_DISPATCH
|
||||
CP BF_EMU + $10 ; $30-$3F: EMULATION
|
||||
JR C,HB_DISPERR
|
||||
CP BF_DSKY + $10 ; $30-$3F: DSKY
|
||||
JP C,DSKY_DISPATCH
|
||||
CP BF_VDA + $10 ; $40-$4F: VIDEO DISPLAY ADAPTER
|
||||
JP C,VDA_DISPATCH
|
||||
CP BF_SND + $08 ; $50-$58: SOUND DRIVERS
|
||||
@@ -3691,6 +3723,7 @@ HB_DSKUNIT .DB 0 ; CURRENT DISK UNIT
|
||||
HB_DSKFUNC .DB 0 ; CURRENT DISK FUNCTION
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
;
|
||||
;==================================================================================================
|
||||
; DSKY DISK ACTIVITY MONITOR
|
||||
@@ -3711,41 +3744,51 @@ HB_DSKFUNC .DB 0 ; CURRENT DISK FUNCTION
|
||||
; ALL REGISTERS PERSERVED
|
||||
;
|
||||
HB_DSKACT:
|
||||
; SAVE EVERYTHING
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
LD DE,DSKY_HEXBUF+3 ; START AT END
|
||||
LD B,3 ; 3 BYTES OF SECTOR ADDRESS
|
||||
;
|
||||
; COPY VALUE TO LOCAL HEXBUF
|
||||
CALL LD32
|
||||
;
|
||||
HB_DSKACT1:
|
||||
LD A,(HL) ; GET FIRST BYTE
|
||||
LD (DE),A ; AND STORE IN BUF
|
||||
INC HL ; NEXT SRC BYTE
|
||||
DEC DE ; NEXT DEST BYTE
|
||||
DJNZ HB_DSKACT1 ; LOOP
|
||||
LD BC,DSKY_HEXBUF
|
||||
CALL ST32
|
||||
;
|
||||
; USE DISK UNIT NUMBER FOR MSB
|
||||
LD A,(HB_DSKUNIT) ; GET DISK UNIT NUM
|
||||
LD (DE),A ; PUT AT HEAD OF BUF
|
||||
HB_DSKACT2:
|
||||
LD HL,DSKY_HEXBUF ; BINARY BUF
|
||||
LD DE,DSKY_BUF ; DISPLAY BUF
|
||||
CALL DSKY_BIN2SEG ; CONVERT TO SEG DISPLAY BUF
|
||||
LD A,(DSKY_BUF+1) ; SECOND SEGMENT
|
||||
OR %10000000 ; TURN ON DOT
|
||||
LD (DSKY_BUF+1),A ; SAVE IT
|
||||
LD (DSKY_HEXBUF+3),A ; REPLACE HIGH BYTE W/ DISK #
|
||||
;
|
||||
; CONVERT TO SEGMENT DISPLAY
|
||||
LD HL,DSKY_HEXBUF ; INPUT POINTER
|
||||
LD DE,DSKY_BUF ; TEMP BUF FOR OUTPUT
|
||||
CALL DSKY_BIN2SEG ; CONVERT TO SEG DISPLAY
|
||||
;
|
||||
; DECIMAL POINT FOR DISK UNIT SEPARATION
|
||||
LD HL,DSKY_BUF+1 ; SECOND CHAR OF DISP
|
||||
SET 7,(HL) ; TURN ON DECIMAL PT
|
||||
;
|
||||
; DECIMAL POINT TO INDICATE WRITE ACTION
|
||||
LD A,(HB_DSKFUNC) ; GET CURRENT I/O FUNCTION
|
||||
CP BF_DIOWRITE ; IS IT A WRITE?
|
||||
JR NZ,HB_DSKACT3 ; IF NOT, NO DOT, SKIP AHEAD
|
||||
LD A,(DSKY_BUF+7) ; LAST SEGMENT
|
||||
OR %10000000 ; TURN ON DOT
|
||||
LD (DSKY_BUF+7),A ; SAVE IT
|
||||
HB_DSKACT3:
|
||||
EX DE,HL ; SEG DISPLAY BUF TO HL
|
||||
CALL DSKY_SHOW ; DISPLAY ON DSKY
|
||||
JR NZ,HB_DSKACT2 ; IF NOT, SKIP
|
||||
LD HL,DSKY_BUF+7 ; POINT TO CHAR 7
|
||||
SET 7,(HL) ; SET WRITE DOT
|
||||
;
|
||||
HB_DSKACT2:
|
||||
; UPDATE DISPLAY
|
||||
LD HL,DSKY_BUF ; SEG DISPLAY BUF TO HL
|
||||
LD B,BF_DSKYSHOWSEG ; SHOW SEG FUNCTION
|
||||
CALL DSKY_DISPATCH ; DO IT
|
||||
;
|
||||
; CLEAN UP AND GO AWAY
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
RET ; DONE
|
||||
;
|
||||
; THIS IS THE CHS VARIANT OF THE ABOVE. THIS IS USED BY CHS ORIENTED
|
||||
; DISK DRIVERS (BASICALLY JUST FLOPPY).
|
||||
@@ -3762,24 +3805,12 @@ HB_DSKACTCHS:
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
LD DE,DSKY_HEXBUF ; START OF HEX BUF
|
||||
LD A,(HB_DSKUNIT) ; GET DISK UNIT NUM
|
||||
LD (DE),A ; PUT AT HEAD OF BUF
|
||||
INC DE ; NEXT BYTE OF BUF
|
||||
LD A,(HL) ; LSB OF TRACK
|
||||
LD (DE),A ; ADD TO BUF
|
||||
INC DE ; NEXT BYTE OF BUF
|
||||
INC HL ; BUMP TO HEAD
|
||||
INC HL ; "
|
||||
INC HL ; "
|
||||
LD A,(HL) ; GET HEAD
|
||||
LD (DE),A ; ADD TO BUF
|
||||
INC DE ; NEXT BYTE OF BUF
|
||||
DEC HL ; BACK TO SECTOR
|
||||
LD A,(HL) ; GET SECTOR
|
||||
LD (DE),A ; ADD TO BUF
|
||||
JR HB_DSKACT2
|
||||
CALL LD32 ; DE:HL = HSCC
|
||||
; MAP HSCC -> CCHS
|
||||
EX DE,HL
|
||||
JR HB_DSKACT1
|
||||
;
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
@@ -3815,6 +3846,38 @@ RTC_DISPADR .DW RTC_DISPERR ; RTC DISPATCH ADDRESS
|
||||
RTC_DISPACT .DB 0 ; SET WHEN DISPADR SET
|
||||
;
|
||||
;==================================================================================================
|
||||
; DSKY DEVICE DISPATCHER
|
||||
;==================================================================================================
|
||||
;
|
||||
; ROUTE CALL TO DSKY DRIVER
|
||||
; B: FUNCTION
|
||||
;
|
||||
DSKY_DISPATCH:
|
||||
PUSH HL ; SAVE INCOMING HL
|
||||
LD HL,(DSKY_DISPADR) ;
|
||||
EX (SP),HL
|
||||
RET
|
||||
;
|
||||
DSKY_DISPERR:
|
||||
SYSCHKERR(ERR_NOHW)
|
||||
RET
|
||||
;
|
||||
; SET DSKY DISPATCH ADDRESS, USED BY DSKY DRIVERS DURING INIT
|
||||
; BC HAS ADDRESS OF DISPATCH ADDRESS
|
||||
; WILL ONLY SAVE THE FIRST ADDRESS SET
|
||||
;
|
||||
DSKY_SETDISP:
|
||||
LD (DSKY_DISPADR),BC ; SAVE THE ADDRESS
|
||||
OR $FF ; FLAG ACTIVE VALUE
|
||||
LD (DSKY_DISPACT),A ; SAVE IT
|
||||
RET ; AND DONE
|
||||
;
|
||||
;
|
||||
;
|
||||
DSKY_DISPADR .DW DSKY_DISPERR ; DSKY DISPATCH ADDRESS
|
||||
DSKY_DISPACT .DB 0 ; SET WHEN DISPADR SET
|
||||
;
|
||||
;==================================================================================================
|
||||
; VIDEO DISPLAY ADAPTER DEVICE DISPATCHER
|
||||
;==================================================================================================
|
||||
;
|
||||
@@ -4216,6 +4279,8 @@ SYS_GET:
|
||||
JP Z,SYS_GETDIOFN
|
||||
CP BF_SYSGET_RTCCNT
|
||||
JP Z,SYS_GETRTCCNT
|
||||
CP BF_SYSGET_DSKYCNT
|
||||
JP Z,SYS_GETDSKYCNT
|
||||
CP BF_SYSGET_VDACNT
|
||||
JP Z,SYS_GETVDACNT
|
||||
CP BF_SYSGET_VDAFN
|
||||
@@ -4303,6 +4368,18 @@ SYS_GETRTCCNT1:
|
||||
XOR A ; SIGNALS SUCCESS
|
||||
RET
|
||||
;
|
||||
; GET DSKY UNIT COUNT
|
||||
;
|
||||
SYS_GETDSKYCNT:
|
||||
LD E,0 ; ASSUME 0 RTC DEVICES
|
||||
LD A,(DSKY_DISPACT) ; IS DSKY ACTIVE?
|
||||
OR A ; SET FLAGS
|
||||
JR Z,SYS_GETDSKYCNT1 ; IF NONE, DONE
|
||||
INC E ; SET ONE DEVICE
|
||||
SYS_GETDSKYCNT1:
|
||||
XOR A ; SIGNALS SUCCESS
|
||||
RET
|
||||
;
|
||||
; GET VIDEO UNIT COUNT
|
||||
;
|
||||
SYS_GETVDACNT:
|
||||
@@ -4983,7 +5060,12 @@ SYS_INTGET1:
|
||||
INC A ; BUMP TO ADR FIELD
|
||||
LD H,0
|
||||
LD L,A
|
||||
#IF (INTMODE == 1)
|
||||
LD DE,HB_IM1INT ; DE := START OF VECTOR TABLE
|
||||
#ENDIF
|
||||
#IF (INTMODE == 2)
|
||||
LD DE,HB_IVT ; DE := START OF VECTOR TABLE
|
||||
#ENDIF
|
||||
ADD HL,DE ; HL := ADR OF VECTOR
|
||||
XOR A ; INDICATE SUCCESS
|
||||
RET
|
||||
@@ -5029,6 +5111,99 @@ SYS_INTSET1:
|
||||
RET ; DONE
|
||||
;
|
||||
;==================================================================================================
|
||||
; Z280 INTERRUPT VECTOR TABLE
|
||||
;==================================================================================================
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
; THE Z280 IVT MUST BE ON A 4K BOUNDARY. IT HAS BEEN LOCATED
|
||||
; HERE IN AN EFFORT TO MINIMIZE WASTED SPACE. THERE SHOULD BE
|
||||
; A LITTLE LESS THAN 4K OF CODE ABOVE.
|
||||
;
|
||||
Z280_IVT_SLACK .EQU $1000 - ($ & $FFF)
|
||||
.ECHO "Z280 IVT SLACK occupies "
|
||||
.ECHO Z280_IVT_SLACK
|
||||
.ECHO " bytes.\n"
|
||||
;.FILL $1000 - ($ & $FFF) ; MUST BE 4K ALIGNED!
|
||||
.FILL Z280_IVT_SLACK ; MUST BE 4K ALIGNED!
|
||||
;
|
||||
Z280_IVT:
|
||||
.DW 0, 0 ; RESERVED
|
||||
.DW 0 ; NMI MSR
|
||||
.DW 0 ; NMI VECTOR
|
||||
.DW $0000 ; INT A MSR
|
||||
.DW Z280_BADINT ; INT A VECTOR
|
||||
.DW $0000 ; INT B MSR
|
||||
.DW Z280_BADINT ; INT B VECTOR
|
||||
.DW $0000 ; INT C MSR
|
||||
.DW Z280_BADINT ; INT C VECTOR
|
||||
.DW $0000 ; COUNTER/TIMER 0 MSR
|
||||
.DW Z280_BADINT ; COUNTER/TIMER 0 VECTOR
|
||||
.DW $0000 ; COUNTER/TIMER 1 MSR
|
||||
.DW Z280_BADINT ; COUNTER/TIMER 1 VECTOR
|
||||
.DW 0, 0 ; RESERVED
|
||||
.DW $0000 ; COUNTER/TIMER 2 MSR
|
||||
.DW Z280_BADINT ; COUNTER/TIMER 2 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 0 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 0 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 1 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 1 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 2 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 2 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 3 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 3 VECTOR
|
||||
.DW $0000 ; UART RECEIVER MSR
|
||||
.DW Z280_BADINT ; UART RECEIVER VECTOR
|
||||
.DW $0000 ; UART TRANSMITTER MSR
|
||||
.DW Z280_BADINT ; UART TRANSMITTER VECTOR
|
||||
.DW $0000 ; SINGLE STEP TRAP MSR
|
||||
.DW Z280_SSTEP ; SINGLE STEP TRAP VECTOR
|
||||
.DW $0000 ; BREAK ON HALT TRAP MSR
|
||||
.DW Z280_BRKHLT ; BREAK ON HALT TRAP VECTOR
|
||||
.DW $0000 ; DIVISION EXCEPTION TRAP MSR
|
||||
.DW Z280_DIVEXC ; DIVISION EXCEPTION TRAP VECTOR
|
||||
.DW $0000 ; STACK OVERFLOW WARNING TRAP MSR
|
||||
.DW Z280_STKOVR ; STACK OVERFLOW WARNING TRAP VECTOR
|
||||
.DW $0000 ; ACCESS VIOLATION TRAP MSR
|
||||
.DW Z280_ACCVIO ; ACCESS VIOLATION TRAP VECTOR
|
||||
.DW $0000 ; SYSTEM CALL TRAP MSR
|
||||
.DW Z280_SYSCALL ; SYSTEM CALL TRAP VECTOR
|
||||
.DW $0000 ; PRIVILEGED INSTRUCTION TRAP MSR
|
||||
.DW Z280_PRIVINST ; PRIVILEGED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW 0, 0 ; RESERVED
|
||||
.DW 0, 0 ; RESERVED
|
||||
; PROGRAM COUNTER VALUES FOR NMI/INTA (16)
|
||||
.DW HBX_IV00
|
||||
.DW HBX_IV01
|
||||
.DW HBX_IV02
|
||||
.DW HBX_IV03
|
||||
.DW HBX_IV04
|
||||
.DW HBX_IV05
|
||||
.DW HBX_IV06
|
||||
.DW HBX_IV07
|
||||
.DW HBX_IV08
|
||||
.DW HBX_IV09
|
||||
.DW HBX_IV0A
|
||||
.DW HBX_IV0B
|
||||
.DW HBX_IV0C
|
||||
.DW HBX_IV0D
|
||||
.DW HBX_IV0E
|
||||
.DW HBX_IV0F
|
||||
; THE REMAINDER OF THE Z280 IVT IS TRUNCATED HERE BECAUSE IT
|
||||
; TAKES A BUNCH OF SPACE AND IS NOT USED. WE SUPPORT ONLY
|
||||
; 16 VECTORED INTERRUPTS AND THEY MUST BE CONNECTED TO INTA.
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; GLOBAL HBIOS FUNCTIONS
|
||||
;==================================================================================================
|
||||
;
|
||||
@@ -5065,7 +5240,43 @@ HB_ADDIM1:
|
||||
;
|
||||
HB_IM1CNT .DB 0 ; NUMBER OF ENTRIES IN CALL LIST
|
||||
HB_IM1MAX .DB 8 ; MAX ENTRIES IN CALL LIST
|
||||
HB_IM1PTR .DW HB_IVT ; POINTER FOR NEXT IM1 ENTRY
|
||||
HB_IM1PTR .DW HB_IM1INT ; POINTER FOR NEXT IM1 ENTRY
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
;
|
||||
;==================================================================================================
|
||||
; CONVERT 32 BIT BINARY TO 8 BYTE HEX SEGMENT DISPLAY
|
||||
;==================================================================================================
|
||||
;
|
||||
; HL: ADR OF 32 BIT BINARY
|
||||
; DE: ADR OF DEST LED SEGMENT DISPLAY BUFFER (8 BYTES)
|
||||
;
|
||||
DSKY_BIN2SEG:
|
||||
LD B,4 ; 4 BYTES OF INPUT
|
||||
LD A,B ; PUT IN ACCUM
|
||||
CALL ADDHLA ; PROCESS FROM END (LITTLE ENDIAN)
|
||||
DSKY_BIN2SEG1:
|
||||
DEC HL ; DEC PTR (LITTLE ENDIAN)
|
||||
LD A,(HL) ; HIGH NIBBLE
|
||||
RRCA \ RRCA \ RRCA \ RRCA ; ROTATE BITS
|
||||
CALL DSKY_BIN2SEG_NIB ; CONVERT NIBBLE INTO OUTPUT BUF
|
||||
LD A,(HL) ; LOW NIBBLE
|
||||
CALL DSKY_BIN2SEG_NIB ; CONVERT NIBBLE INTO OUTPUT BUF
|
||||
DJNZ DSKY_BIN2SEG1 ; LOOP FOR ALL INPUT BYTES
|
||||
RET ; DONE
|
||||
;
|
||||
DSKY_BIN2SEG_NIB:
|
||||
PUSH HL ; SAVE HL
|
||||
LD HL,DSKY_HEXMAP ; POINT TO SEG MAP TABLE
|
||||
AND $0F ; ISOLATE LOW NIBBLE
|
||||
CALL ADDHLA ; OFFSET INTO TABLE
|
||||
LD A,(HL) ; LOAD VALUE FROM TABLE
|
||||
POP HL ; RESTORE HL
|
||||
LD (DE),A ; SAVE VALUE TO OUTPUT BUF
|
||||
INC DE ; BUMP TO NEXT OUTPUT BYTE
|
||||
RET ; DONE
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
@@ -5552,94 +5763,6 @@ HB_ALLOC1:
|
||||
HB_TMPSZ .DW 0
|
||||
HB_TMPREF .DW 0
|
||||
;
|
||||
;==================================================================================================
|
||||
; Z280 INTERRUPT VECTOR TABLE
|
||||
;==================================================================================================
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
;
|
||||
; THE Z280 IVT MUST BE ON A 4K BOUNDARY. IT HAS BEEN LOCATED
|
||||
; HERE IN AN EFFORT TO MINIMIZE WASTED SPACE. THERE SHOULD BE
|
||||
; A LITTLE LESS THAN 4K OF CODE ABOVE.
|
||||
;
|
||||
.FILL $1000 - ($ & $FFF) ; MUST BE 4K ALIGNED!
|
||||
;
|
||||
Z280_IVT:
|
||||
.DW 0, 0 ; RESERVED
|
||||
.DW 0 ; NMI MSR
|
||||
.DW 0 ; NMI VECTOR
|
||||
.DW $0000 ; INT A MSR
|
||||
.DW Z280_BADINT ; INT A VECTOR
|
||||
.DW $0000 ; INT B MSR
|
||||
.DW Z280_BADINT ; INT B VECTOR
|
||||
.DW $0000 ; INT C MSR
|
||||
.DW Z280_BADINT ; INT C VECTOR
|
||||
.DW $0000 ; COUNTER/TIMER 0 MSR
|
||||
.DW Z280_BADINT ; COUNTER/TIMER 0 VECTOR
|
||||
.DW $0000 ; COUNTER/TIMER 1 MSR
|
||||
.DW Z280_BADINT ; COUNTER/TIMER 1 VECTOR
|
||||
.DW 0, 0 ; RESERVED
|
||||
.DW $0000 ; COUNTER/TIMER 2 MSR
|
||||
.DW Z280_BADINT ; COUNTER/TIMER 2 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 0 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 0 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 1 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 1 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 2 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 2 VECTOR
|
||||
.DW $0000 ; DMA CHANNEL 3 MSR
|
||||
.DW Z280_BADINT ; DMA CHANNEL 3 VECTOR
|
||||
.DW $0000 ; UART RECEIVER MSR
|
||||
.DW Z280_BADINT ; UART RECEIVER VECTOR
|
||||
.DW $0000 ; UART TRANSMITTER MSR
|
||||
.DW Z280_BADINT ; UART TRANSMITTER VECTOR
|
||||
.DW $0000 ; SINGLE STEP TRAP MSR
|
||||
.DW Z280_SSTEP ; SINGLE STEP TRAP VECTOR
|
||||
.DW $0000 ; BREAK ON HALT TRAP MSR
|
||||
.DW Z280_BRKHLT ; BREAK ON HALT TRAP VECTOR
|
||||
.DW $0000 ; DIVISION EXCEPTION TRAP MSR
|
||||
.DW Z280_DIVEXC ; DIVISION EXCEPTION TRAP VECTOR
|
||||
.DW $0000 ; STACK OVERFLOW WARNING TRAP MSR
|
||||
.DW Z280_STKOVR ; STACK OVERFLOW WARNING TRAP VECTOR
|
||||
.DW $0000 ; ACCESS VIOLATION TRAP MSR
|
||||
.DW Z280_ACCVIO ; ACCESS VIOLATION TRAP VECTOR
|
||||
.DW $0000 ; SYSTEM CALL TRAP MSR
|
||||
.DW Z280_SYSCALL ; SYSTEM CALL TRAP VECTOR
|
||||
.DW $0000 ; PRIVILEGED INSTRUCTION TRAP MSR
|
||||
.DW Z280_PRIVINST ; PRIVILEGED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP MSR
|
||||
.DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP VECTOR
|
||||
.DW 0, 0 ; RESERVED
|
||||
.DW 0, 0 ; RESERVED
|
||||
; PROGRAM COUNTER VALUES FOR NMI/INTA (16)
|
||||
.DW HBX_IV00
|
||||
.DW HBX_IV01
|
||||
.DW HBX_IV02
|
||||
.DW HBX_IV03
|
||||
.DW HBX_IV04
|
||||
.DW HBX_IV05
|
||||
.DW HBX_IV06
|
||||
.DW HBX_IV07
|
||||
.DW HBX_IV08
|
||||
.DW HBX_IV09
|
||||
.DW HBX_IV0A
|
||||
.DW HBX_IV0B
|
||||
.DW HBX_IV0C
|
||||
.DW HBX_IV0D
|
||||
.DW HBX_IV0E
|
||||
.DW HBX_IV0F
|
||||
; THE REMAINDER OF THE Z280 IVT IS TRUNCATED HERE BECAUSE IT
|
||||
; TAKES A BUNCH OF SPACE AND IS NOT USED. WE SUPPORT ONLY
|
||||
; 16 VECTORED INTERRUPTS AND THEY MUST BE CONNECTED TO INTA.
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; Z280 BANK SELECTION (CALLED FROM PROXY)
|
||||
;
|
||||
#IF (MEMMGR == MM_Z280)
|
||||
@@ -5966,6 +6089,28 @@ Z280_SYSCALL_GO:
|
||||
; DEVICE DRIVERS
|
||||
;==================================================================================================
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (ICMENABLE)
|
||||
ORG_ICM .EQU $
|
||||
#INCLUDE "icm.asm"
|
||||
SIZ_ICM .EQU $ - ORG_ICM
|
||||
.ECHO "ICM occupies "
|
||||
.ECHO SIZ_ICM
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (PKDENABLE)
|
||||
ORG_PKD .EQU $
|
||||
#INCLUDE "pkd.asm"
|
||||
SIZ_PKD .EQU $ - ORG_PKD
|
||||
.ECHO "PKD occupies "
|
||||
.ECHO SIZ_PKD
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSRTCENABLE)
|
||||
ORG_DSRTC .EQU $
|
||||
#INCLUDE "dsrtc.asm"
|
||||
@@ -6294,6 +6439,15 @@ SIZ_PPP .EQU $ - ORG_PPP
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (ESPENABLE)
|
||||
ORG_ESP .EQU $
|
||||
#INCLUDE "esp.asm"
|
||||
SIZ_ESP .EQU $ - ORG_ESP
|
||||
.ECHO "ESP occupies "
|
||||
.ECHO SIZ_ESP
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (MDENABLE)
|
||||
ORG_MD .EQU $
|
||||
#INCLUDE "md.asm"
|
||||
@@ -6461,16 +6615,6 @@ SIZ_YM2612 .EQU $ - ORG_YM2612
|
||||
#INCLUDE "mio.asm"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#DEFINE DSKY_KBD
|
||||
#IF (DSKYMODE == DSKYMODE_V1)
|
||||
#INCLUDE "dsky.asm"
|
||||
#ENDIF
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
#INCLUDE "dskyng.asm"
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; INCLUDE LZSA2 decompression engine if required.
|
||||
;
|
||||
#IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE | VRCENABLE) & USELZSA2)
|
||||
@@ -6744,7 +6888,7 @@ PS_DISK:
|
||||
;
|
||||
; DEVICE COLUMN
|
||||
LD B,BF_DIODEVICE ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C
|
||||
RST 08 ; DE:=DEVTYP/NUM, H:=DISK ATTRIBUTES
|
||||
RST 08 ; DE:=DEVTYP/NUM, C:=DISK ATTRIBUTES
|
||||
PUSH BC ; SAVE ATTRIBUTES
|
||||
LD HL,PS_DDMD ; POINT TO DISK DEVICE TYPE NAME TABLE
|
||||
CALL PS_PRTDEV ; PRINT DISK DEVICE NMEMONIC PADDED TO FIELD WIDTH
|
||||
@@ -6768,7 +6912,7 @@ PS_PRTDT:
|
||||
|
||||
LD C,E
|
||||
LD DE,PS_DTHARD
|
||||
LD A,00111000B
|
||||
LD A,00001111B
|
||||
CALL PRTIDXMSK
|
||||
CALL PS_PAD18 ; PAD TO 18 SPACES
|
||||
RET
|
||||
@@ -6780,10 +6924,7 @@ PS_PRTDC:
|
||||
LD A,E ; ATTRIBUTE TO ACCUM
|
||||
BIT 7,A ; TEST FOR FLOPPY
|
||||
JR NZ,PS_PRTDC2 ; HANDLE FLOPPY
|
||||
RRCA ; ISOLATE TYPE BITS
|
||||
RRCA
|
||||
RRCA
|
||||
AND $07
|
||||
AND $0F ; ISOLATE TYPE BITS
|
||||
CP 4 ; ROM DISK?
|
||||
JR Z,PS_PRTDC1 ; PRINT CAPACITY IN KB
|
||||
CP 5 ; RAM DISK?
|
||||
@@ -6821,15 +6962,15 @@ PS_PRTDC1:
|
||||
PS_PRTDC2:
|
||||
LD C,E ; ATTRIBUTE TO C FOR SAFE KEEPING
|
||||
;
|
||||
LD A,01100000B ; DISPLAY FORM FACTOR
|
||||
LD A,%00011000 ; DISPLAY FORM FACTOR
|
||||
LD DE,PS_FLP_FSTR ; WHICH IS DEFINED IN
|
||||
CALL PRTIDXMSK ; BITS 5 AND 6.
|
||||
;
|
||||
LD A,00010000B ; DISPLAY SIDES
|
||||
LD A,%00000100 ; DISPLAY SIDES
|
||||
LD DE,PS_FLP_SSTR ; WHICH IS DEFINED
|
||||
CALL PRTIDXMSK ; IN BIT 4
|
||||
;
|
||||
LD A,00001100B ; DISPLAY DENSITY
|
||||
LD A,%00000011 ; DISPLAY DENSITY
|
||||
LD DE,PS_FLP_DSTR ; WHICH IS DEFINED IN
|
||||
CALL PRTIDXMSK ; BITS 2 AND 3.
|
||||
;
|
||||
@@ -6977,7 +7118,7 @@ PS_PRTSC1:
|
||||
RET
|
||||
;
|
||||
PS_PRTSC2:
|
||||
PRTS("PropTerm$") ; ASSUME PROPELLER
|
||||
PRTS("Term Module$")
|
||||
CALL PC_COMMA
|
||||
PRTS("ANSI$")
|
||||
RET
|
||||
@@ -7183,6 +7324,8 @@ PS_DTROM .TEXT "ROM Disk$"
|
||||
PS_DTRAM .TEXT "RAM Disk$"
|
||||
PS_DTRF .TEXT "RAM Floppy$"
|
||||
PS_DTFSH .TEXT "Flash Drive$"
|
||||
PS_DTCD .TEXT "CD-ROM$"
|
||||
PS_DTCRT .TEXT "Cartridge$"
|
||||
PS_DTOTHER .TEXT "???$"
|
||||
;
|
||||
; FLOPPY ATTRIBUTE STRINGS
|
||||
@@ -7214,6 +7357,7 @@ PS_SDUF .TEXT "UF$"
|
||||
PS_SDDUART .TEXT "DUART$"
|
||||
PS_SDZ2U .TEXT "Z2U$"
|
||||
PS_SDLPT .TEXT "LPT$"
|
||||
PS_SDESPCON .TEXT "ESPCON$"
|
||||
;
|
||||
; CHARACTER SUB TYPE STRINGS
|
||||
;
|
||||
@@ -7561,12 +7705,7 @@ STR_CONTINUE .TEXT "\r\nContinue (Y/N)? $"
|
||||
STR_RESTART .TEXT "\r\n\r\n>>> Press hardware reset button to restart system\r\n\r\n$"
|
||||
;
|
||||
#IF (DSKYENABLE) ; 'H','B','I','O',' ',' ',' ',' '
|
||||
#IF (DSKYMODE == DSKYMODE_V1)
|
||||
MSG_HBVER .DB $3E,$7F,$0A,$7B,$00,$00,$00,$00 ; "HBIO "
|
||||
#ENDIF
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
MSG_HBVER .DB $76,$7F,$30,$3F,$00,$00,$00,$00 ; "HBIO "
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
HB_APPBNK .DB 0 ; START BANK WHEN RUN IN APP MODE
|
||||
@@ -7629,6 +7768,41 @@ MG014_STATMAPHI:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
;
|
||||
;==================================================================================================
|
||||
; STORAGE
|
||||
;==================================================================================================
|
||||
;
|
||||
; CODES FOR NUMERICS
|
||||
; HIGH BIT ALWAYS CLEAR TO SUPPRESS DECIMAL POINT
|
||||
; SET HIGH BIT TO SHOW DECIMAL POINT
|
||||
;
|
||||
DSKY_HEXMAP:
|
||||
.DB $3F ; 0
|
||||
.DB $06 ; 1
|
||||
.DB $5B ; 2
|
||||
.DB $4F ; 3
|
||||
.DB $66 ; 4
|
||||
.DB $6D ; 5
|
||||
.DB $7D ; 6
|
||||
.DB $07 ; 7
|
||||
.DB $7F ; 8
|
||||
.DB $67 ; 9
|
||||
.DB $77 ; A
|
||||
.DB $7C ; B
|
||||
.DB $39 ; C
|
||||
.DB $5E ; D
|
||||
.DB $79 ; E
|
||||
.DB $71 ; F
|
||||
;
|
||||
DSKY_BUF .FILL 8,0
|
||||
DSKY_BUFLEN .EQU $ - DSKY_BUF
|
||||
DSKY_HEXBUF .FILL 4,0
|
||||
DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_END .EQU $
|
||||
;
|
||||
SLACK .EQU BNKTOP - $
|
||||
|
||||
@@ -36,7 +36,16 @@ BF_RTCGETALM .EQU BF_RTC + 6 ; GET ALARM
|
||||
BF_RTCSETALM .EQU BF_RTC + 7 ; SET ALARM
|
||||
BF_RTCDEVICE .EQU BF_RTC + 8 ; RTC DEVICE INFO REPORT
|
||||
;
|
||||
BF_EMU .EQU $30 ; DEPRECATED
|
||||
BF_DSKY .EQU $30
|
||||
BF_DSKYRESET .EQU BF_DSKY + 0 ; RESET DSKY HARDWARE
|
||||
BF_DSKYSTAT .EQU BF_DSKY + 1 ; GET KEYPAD STATUS
|
||||
BF_DSKYGETKEY .EQU BF_DSKY + 2 ; GET KEY FROM KEYPAD
|
||||
BF_DSKYSHOWHEX .EQU BF_DSKY + 3 ; DISPLAY BINARY VALUE IN HEX
|
||||
BF_DSKYSHOWSEG .EQU BF_DSKY + 4 ; DISPLAY ENCODED SEGMENT STRING
|
||||
BF_DSKYKEYLEDS .EQU BF_DSKY + 5 ; SET/CLEAR KEYPAD LEDS
|
||||
BF_DSKYSTATLED .EQU BF_DSKY + 6 ; SET/CLEAR STATUS LEDS
|
||||
BF_DSKYBEEP .EQU BF_DSKY + 7 ; BEEP ONBOARD DSKY SPEAKER
|
||||
BF_DSKYDEVICE .EQU BF_DSKY + 8 ; DSKY DEVICE INFO REPORT
|
||||
;
|
||||
BF_VDA .EQU $40
|
||||
BF_VDAINI .EQU BF_VDA + 0 ; INITIALIZE VDU
|
||||
@@ -98,6 +107,7 @@ BF_SYSGET_CIOFN .EQU $01 ; GET CIO UNIT FN/DATA ADR
|
||||
BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT
|
||||
BF_SYSGET_DIOFN .EQU $11 ; GET DIO UNIT FN/DATA ADR
|
||||
BF_SYSGET_RTCCNT .EQU $20 ; GET RTC UNIT COUNT
|
||||
BF_SYSGET_DSKYCNT .EQU $30 ; GET DSKY UNIT COUNT
|
||||
BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT
|
||||
BF_SYSGET_VDAFN .EQU $41 ; GET VDA UNIT FN/DATA ADR
|
||||
BF_SYSGET_SNDCNT .EQU $50 ; GET VDA UNIT COUNT
|
||||
@@ -140,6 +150,8 @@ PLT_RCZ280 .EQU 12 ; RCBUS W/ Z280
|
||||
PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER
|
||||
PLT_RPH .EQU 14 ; RHYOPHYRE GRAPHICS COMPUTER
|
||||
PLT_Z80RETRO .EQU 15 ; Z80 RETRO COMPUTER
|
||||
PLT_S100 .EQU 16 ; S100 COMPUTERS Z180 SYSTEM
|
||||
PLT_DUO .EQU 17 ; DUODYNE Z80 SYSTEM
|
||||
;
|
||||
; HBIOS GLOBAL ERROR RETURN VALUES
|
||||
;
|
||||
@@ -301,6 +313,7 @@ CIODEV_UF .EQU $80
|
||||
CIODEV_DUART .EQU $90
|
||||
CIODEV_Z2U .EQU $A0
|
||||
CIODEV_LPT .EQU $B0
|
||||
CIODEV_ESPCON .EQU $C0
|
||||
;
|
||||
; SUB TYPES OF CHAR DEVICES
|
||||
;
|
||||
@@ -334,6 +347,11 @@ RTCDEV_INT .EQU $30 ; PERIODIC INT TIMER
|
||||
RTCDEV_DS7 .EQU $40 ; DS1307 (I2C)
|
||||
RTCDEV_RP5 .EQU $50 ; RP5C01
|
||||
;
|
||||
; DSKY DEVICE IDS
|
||||
;
|
||||
DSKYDEV_ICM .EQU $00 ; Intersil ICM7218
|
||||
DSKYDEV_PKD .EQU $10 ; Intel P8279
|
||||
;
|
||||
; VIDEO DEVICE IDS
|
||||
;
|
||||
VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545
|
||||
@@ -350,6 +368,37 @@ SNDDEV_AY38910 .EQU $10
|
||||
SNDDEV_BITMODE .EQU $20
|
||||
SNDDEV_YM2612 .EQU $30
|
||||
;
|
||||
; DSKY KEYS
|
||||
;
|
||||
KY_0 .EQU $00
|
||||
KY_1 .EQU $01
|
||||
KY_2 .EQU $02
|
||||
KY_3 .EQU $03
|
||||
KY_4 .EQU $04
|
||||
KY_5 .EQU $05
|
||||
KY_6 .EQU $06
|
||||
KY_7 .EQU $07
|
||||
KY_8 .EQU $08
|
||||
KY_9 .EQU $09
|
||||
KY_A .EQU $0A
|
||||
KY_B .EQU $0B
|
||||
KY_C .EQU $0C
|
||||
KY_D .EQU $0D
|
||||
KY_E .EQU $0E
|
||||
KY_F .EQU $0F
|
||||
KY_FW .EQU $10 ; FORWARD
|
||||
KY_BK .EQU $11 ; BACKWARD
|
||||
KY_CL .EQU $12 ; CLEAR
|
||||
KY_EN .EQU $13 ; ENTER
|
||||
KY_DE .EQU $14 ; DEPOSIT
|
||||
KY_EX .EQU $15 ; EXAMINE
|
||||
KY_GO .EQU $16 ; GO
|
||||
KY_BO .EQU $17 ; BOOT
|
||||
KY_F4 .EQU $18 ; F4
|
||||
KY_F3 .EQU $19 ; F3
|
||||
KY_F2 .EQU $1A ; F2
|
||||
KY_F1 .EQU $1B ; F1
|
||||
;
|
||||
; HBIOS CONTROL BLOCK OFFSETS
|
||||
; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES
|
||||
; IT IS STRONGLY RECOMMENDED THAT YOU DO NOT USE THEM!
|
||||
|
||||
@@ -166,7 +166,7 @@ HDSK_GEOM:
|
||||
HDSK_DEVICE:
|
||||
LD D,DIODEV_HDSK ; D := DEVICE TYPE
|
||||
LD E,(IY+HDSK_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%00000000 ; C := ATTRIBUTES, NON-REMOVABLE HARD DISK
|
||||
LD C,%00110000 ; C := ATTRIBUTES, NON-REMOVABLE HARD DISK
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,HDSK_IO ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -234,9 +234,11 @@ HDSK_RW0:
|
||||
LD (HDSK_RC),A ; CLEAR RETURN CODE
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,HDSK_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; CONVERT LBA HHHH:LLLL (4 BYTES)
|
||||
|
||||
359
Source/HBIOS/icm.asm
Normal file
359
Source/HBIOS/icm.asm
Normal file
@@ -0,0 +1,359 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; DSKY V1 ICM7218 (DISPLAY AND KEYBOARD) ROUTINES
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE ICM MAY COINCIDE ON THE SAME PPI BUS AS A PPISD. IT MAY NOT
|
||||
; SHARE A PPI BUS WITH A PPIDE. SEE PPI_BUS.TXT FOR MORE INFORMATION.
|
||||
;
|
||||
; LED SEGMENTS (BIT VALUES)
|
||||
;
|
||||
; +--40--+
|
||||
; 02 20
|
||||
; +--04--+
|
||||
; 08 10
|
||||
; +--01--+ 80
|
||||
;
|
||||
; ICM SCAN CODES ARE ONE BYTE: CCRRRRRR
|
||||
; BITS 7-6 IDENTFY THE COLUMN OF THE KEY PRESSED
|
||||
; BITS 5-0 ARE A BITMAP, WITH A BIT ON TO INDICATE ROW OF KEY PRESSED
|
||||
;
|
||||
; ____PC0________PC1________PC2________PC3____
|
||||
; PB5 | $20 [D] $60 [E] $A0 [F] $E0 [BO]
|
||||
; PB4 | $10 [A] $50 [B] $90 [C] $D0 [GO]
|
||||
; PB3 | $08 [7] $48 [8] $88 [9] $C8 [EX]
|
||||
; PB2 | $04 [4] $44 [5] $84 [6] $C4 [DE]
|
||||
; PB1 | $02 [1] $42 [2] $82 [3] $C2 [EN]
|
||||
; PB0 | $01 [FW] $41 [0] $81 [BK] $C1 [CL]
|
||||
;
|
||||
;
|
||||
ICM_PPIA .EQU ICMPPIBASE + 0 ; PORT A
|
||||
ICM_PPIB .EQU ICMPPIBASE + 1 ; PORT B
|
||||
ICM_PPIC .EQU ICMPPIBASE + 2 ; PORT C
|
||||
ICM_PPIX .EQU ICMPPIBASE + 3 ; PPI CONTROL PORT
|
||||
;
|
||||
;__ICM_INIT__________________________________________________________________________________________
|
||||
;
|
||||
; CONFIGURE PARALLEL PORT AND CLEAR KEYPAD BUFFER
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
ICM_PREINIT:
|
||||
LD A,(DSKY_DISPACT) ; DSKY DISPATCHER ALREADY SET?
|
||||
OR A ; SET FLAGS
|
||||
RET NZ ; IF ALREADY ACTIVE, ABORT
|
||||
;
|
||||
OR $FF ; SIGNAL TO WAIT FOR KEY RELEASE
|
||||
LD (ICM_KEYBUF),A ; SET IT
|
||||
;
|
||||
; PPI PORT B IS NORMALLY SET TO INPUT, BUT HERE WE
|
||||
; TEMPORARILY SET IT TO OUTPUT. WHILE IN OUTPUT MODE, WE
|
||||
; WRITE A VALUE OF $FF WHICH WILL BE PERSISTED BY THE PPI
|
||||
; CHIP BUS HOLD CIRCUIT IF THERE IS NO ICM PRESENT. SO,
|
||||
; WE CAN SUBSEQUENTLY TEST FOR PPIB=$FF TO SEE IF THERE IS
|
||||
; NO ICM AND PREVENT PROBLEMS WITH PHANTOM ICM KEY PRESSES.
|
||||
; IF A ICM IS PRESENT, IT WILL SIMPLY OVERPOWER THE PPI
|
||||
; BUS HOLD CIRCUIT.
|
||||
LD A,$80 ; PA OUT, PB OUT, PC OUT
|
||||
OUT (ICM_PPIX),A
|
||||
LD A,$FF ; SET PPIB=$FF, BUS HOLD
|
||||
OUT (ICM_PPIB),A
|
||||
;
|
||||
LD A,$82 ; PA OUT, PB IN, PC OUT
|
||||
OUT (ICM_PPIX),A
|
||||
;
|
||||
;IN A,(ICM_PPIB) ; *DEBUG*
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
;
|
||||
IN A,(ICM_PPIB) ; READ PPIB
|
||||
XOR $FF ; INVERT RESULT
|
||||
;
|
||||
CALL ICM_RESET
|
||||
;
|
||||
RET Z ; BAIL OUT NOW IF NOT PRESENT
|
||||
;
|
||||
; RECORD HARDWARE PRESENT
|
||||
LD A,$FF
|
||||
LD (ICM_PRESENT),A
|
||||
;
|
||||
; REGISTER DRIVER WITH HBIOS
|
||||
LD BC,ICM_DISPATCH
|
||||
CALL DSKY_SETDISP
|
||||
;
|
||||
RET
|
||||
;
|
||||
ICM_INIT:
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("ICM:$") ; FORMATTING
|
||||
;
|
||||
PRTS(" IO=0x$") ; FORMATTING
|
||||
LD A,ICMPPIBASE ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
;
|
||||
LD A,(ICM_PRESENT) ; PRESENT?
|
||||
OR A ; SET FLAGS
|
||||
RET NZ ; YES, ALL DONE
|
||||
PRTS(" NOT PRESENT$") ; NOT PRESENT
|
||||
;
|
||||
RET
|
||||
;
|
||||
; ICM DEVICE FUNCTION DISPATCH ENTRY
|
||||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR
|
||||
; B: FUNCTION (IN)
|
||||
;
|
||||
ICM_DISPATCH:
|
||||
LD A,B ; GET REQUESTED FUNCTION
|
||||
AND $0F ; ISOLATE SUB-FUNCTION
|
||||
JP Z,ICM_RESET ; RESET DSKY HARDWARE
|
||||
DEC A
|
||||
JP Z,ICM_STAT ; GET KEYPAD STATUS
|
||||
DEC A
|
||||
JP Z,ICM_GETKEY ; READ A KEY FROM THE KEYPAD
|
||||
DEC A
|
||||
JP Z,ICM_SHOWHEX ; DISPLAY A 32-BIT BINARY VALUE IN HEX
|
||||
DEC A
|
||||
JP Z,ICM_SHOWSEG ; DISPLAY SEGMENTS
|
||||
DEC A
|
||||
JP Z,ICM_KEYLEDS ; SET KEYPAD LEDS
|
||||
DEC A
|
||||
JP Z,ICM_STATLED ; SET STATUS LED
|
||||
DEC A
|
||||
JP Z,ICM_BEEP ; BEEP DSKY SPEAKER
|
||||
DEC A
|
||||
JP Z,ICM_DEVICE ; DEVICE INFO
|
||||
SYSCHKERR(ERR_NOFUNC)
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
ICM_RESET:
|
||||
PUSH AF
|
||||
LD A,$70 ; PPISD AND 7218 INACTIVE
|
||||
OUT (ICM_PPIC),A
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS
|
||||
;
|
||||
ICM_STAT:
|
||||
LD A,(ICM_KEYBUF) ; GET CURRENT BUF VAL
|
||||
CP $FF ; $FF MEANS WE ARE WAITING FOR PREV KEY TO BE RELEASED
|
||||
JR Z,ICM_STAT1 ; CHECK FOR PREV KEY RELEASE
|
||||
OR A ; DO WE HAVE A SCAN CODE BUFFERED ALREADY?
|
||||
RET NZ ; IF SO, WE ARE DONE
|
||||
JR ICM_STAT2 ; OTHERWISE, DO KEY CHECK
|
||||
|
||||
ICM_STAT1:
|
||||
; WAITING FOR PREVIOUS KEY RELEASE
|
||||
CALL ICM_KEY ; SCAN
|
||||
JR Z,ICM_STAT2 ; IF ZERO, PREV KEY RELEASED, CONTINUE
|
||||
XOR A ; SIGNAL NO KEY PRESSED
|
||||
RET ; AND DONE
|
||||
|
||||
ICM_STAT2:
|
||||
CALL ICM_KEY ; SCAN
|
||||
LD (ICM_KEYBUF),A ; SAVE RESULT
|
||||
RET ; RETURN WITH ZF SET APPROPRIATELY
|
||||
;
|
||||
; WAIT FOR A ICM KEYPRESS AND RETURN
|
||||
;
|
||||
ICM_GETKEY:
|
||||
CALL ICM_STAT ; CHECK STATUS
|
||||
JR Z,ICM_GETKEY ; LOOP IF NOTHING READY
|
||||
LD A,(ICM_KEYBUF)
|
||||
LD B,24 ; SIZE OF DECODE TABLE
|
||||
LD C,0 ; INDEX
|
||||
LD HL,ICM_KEYMAP ; POINT TO BEGINNING OF TABLE
|
||||
ICM_GETKEY1:
|
||||
CP (HL) ; MATCH?
|
||||
JR Z,ICM_GETKEY2 ; FOUND, DONE
|
||||
INC HL
|
||||
INC C ; BUMP INDEX
|
||||
DJNZ ICM_GETKEY1 ; LOOP UNTIL EOT
|
||||
ICM_GETKEY1A:
|
||||
LD A,$FF ; NOT FOUND ERR, RETURN $FF
|
||||
RET
|
||||
ICM_GETKEY2:
|
||||
LD A,$FF ; SET KEY BUF TO $FF
|
||||
LD (ICM_KEYBUF),A ; DO IT
|
||||
; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND
|
||||
LD E,C ; RETURN INDEX VALUE
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; DISPLAY HEX VALUE FROM DE:HL
|
||||
;
|
||||
ICM_SHOWHEX:
|
||||
LD BC,DSKY_HEXBUF ; POINT TO HEX BUFFER
|
||||
CALL ST32 ; STORE 32-BIT BINARY THERE
|
||||
LD HL,DSKY_HEXBUF ; FROM: BINARY VALUE (HL)
|
||||
LD DE,DSKY_BUF ; TO: SEGMENT BUFFER (DE)
|
||||
CALL DSKY_BIN2SEG ; CONVERT
|
||||
LD HL,DSKY_BUF ; POINT TO SEGMENT BUFFER
|
||||
; AND FALL THRU TO DISPLAY IT
|
||||
;
|
||||
; ICM SHOW BUFFER
|
||||
; HL: ADDRESS OF BUFFER
|
||||
;
|
||||
ICM_SHOWSEG:
|
||||
LD A,82H ; SETUP PPI
|
||||
OUT (ICM_PPIX),A
|
||||
CALL ICM_COFF
|
||||
LD A,$F0 ; 7218 -> (DATA COMING, NO DECODE)
|
||||
OUT (ICM_PPIA),A
|
||||
CALL ICM_STROBEC ; STROBE COMMAND
|
||||
LD B,DSKY_BUFLEN ; NUMBER OF DIGITS
|
||||
LD C,ICM_PPIA
|
||||
ICM_HEXOUT2:
|
||||
LD A,(HL)
|
||||
CALL ICM_XLAT ; MAP SEGMENTS
|
||||
XOR $80 ; FIX DOT POLARITY
|
||||
OUT (C),A
|
||||
INC HL
|
||||
DEC B
|
||||
JP Z,ICM_STROBE ; DO FINAL STROBE AND RETURN
|
||||
CALL ICM_STROBE ; STROBE BYTE VALUE
|
||||
JR ICM_HEXOUT2
|
||||
ICM_STROBEC: ; COMMAND STROBE
|
||||
LD A,80H | 30H
|
||||
JP ICM_STROBE0
|
||||
ICM_STROBE: ; DATA STROBE
|
||||
LD A,00H | 30H ; SET WRITE STROBE
|
||||
ICM_STROBE0:
|
||||
OUT (ICM_PPIC),A ; OUT TO PORTC
|
||||
CALL DLY2 ; DELAY
|
||||
ICM_COFF:
|
||||
LD A,40H | 30H ; QUIESCE
|
||||
OUT (ICM_PPIC),A ; OUT TO PORTC
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
ICM_KEYLEDS:
|
||||
ICM_STATLED:
|
||||
ICM_BEEP:
|
||||
XOR A ; PRETEND SUCCESS
|
||||
RET
|
||||
;
|
||||
; DEVICE INFORMATION
|
||||
;
|
||||
ICM_DEVICE:
|
||||
LD D,DSKYDEV_ICM ; D := DEVICE TYPE
|
||||
LD E,0 ; E := PHYSICAL DEVICE NUMBER
|
||||
LD H,0 ; H := MODE
|
||||
LD L,ICMPPIBASE ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;__ICM_KEY___________________________________________________________________________________________
|
||||
;
|
||||
; CHECK FOR KEY PRESS W/ DEBOUNCE
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
ICM_KEY:
|
||||
CALL ICM_SCAN ; INITIAL KEY PRESS SCAN
|
||||
LD E,A ; SAVE INITIAL SCAN VALUE
|
||||
ICM_KEY1:
|
||||
; MAX BOUNCE TIME FOR OMRON B3F IS 3MS
|
||||
PUSH DE ; SAVE DE
|
||||
LD DE,300 ; ~3MS DELAY
|
||||
CALL VDELAY ; DO IT
|
||||
CALL ICM_SCAN ; REPEAT SCAN
|
||||
POP DE ; RESTORE DE
|
||||
RET Z ; IF NOTHING PRESSED, DONE
|
||||
CP E ; SAME?
|
||||
JR ICM_KEY2 ; YES, READY TO RETURN
|
||||
LD E,A ; OTHERWISE, SAVE NEW SCAN VAL
|
||||
JR ICM_KEY1 ; AND LOOP UNTIL STABLE VALUE
|
||||
ICM_KEY2:
|
||||
OR A ; SET FLAGS BASED ON VALUE
|
||||
RET ; AND DONE
|
||||
;
|
||||
;__ICM_SCAN__________________________________________________________________________________________
|
||||
;
|
||||
; SCAN KEYPAD AND RETURN RAW SCAN CODE (RETURNS ZERO IF NO KEY PRESSED)
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
ICM_SCAN:
|
||||
LD B,4 ; 4 COLUMNS
|
||||
LD C,$01 ; FIRST COLUMN
|
||||
LD E,0 ; INITIAL COL ID
|
||||
ICM_SCAN1:
|
||||
LD A,C ; COL TO A
|
||||
OR $70 ; KEEP PPISD AND 7218 INACTIVE
|
||||
OUT (ICM_PPIC),A ; ACTIVATE COL
|
||||
IN A,(ICM_PPIB) ; READ ROW BITS
|
||||
AND $3F ; MASK, WE ONLY HAVE 6 ROWS, OTHERS UNDEFINED
|
||||
JR NZ,ICM_SCAN2 ; IF NOT ZERO, GOT SOMETHING
|
||||
RLC C ; NEXT COL
|
||||
INC E ; BUMP COL ID
|
||||
DJNZ ICM_SCAN1 ; LOOP THROUGH ALL COLS
|
||||
XOR A ; NOTHING FOUND, RETURN ZERO
|
||||
JP ICM_RESET ; RETURN VIA RESET
|
||||
ICM_SCAN2:
|
||||
RRC E ; MOVE COL ID
|
||||
RRC E ; ... TO HIGH BITS 6 & 7
|
||||
OR E ; COMBINE WITH ROW
|
||||
JP ICM_RESET ; RETURN VIA RESET
|
||||
;
|
||||
;
|
||||
; CONVERT FORM STANDARD SEGMENT ENCODING TO ICM ENCODING
|
||||
;
|
||||
; From: To:
|
||||
; +--01--+ +--40--+
|
||||
; 20 02 02 20
|
||||
; +--40--+ +--04--+
|
||||
; 10 04 08 10
|
||||
; +--08--+ 80 +--01--+ 80
|
||||
;
|
||||
ICM_XLAT:
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
LD C,A ; ORIG VALUE TO C
|
||||
XOR A ; INIT RESULT VALUE
|
||||
LD B,8
|
||||
LD HL,ICM_XTBL
|
||||
ICM_XLAT1:
|
||||
RRC C ; SHIFT NEXT BIT TO CF
|
||||
JR NC,ICM_XLAT2 ; SKIP IF BIT NOT SET
|
||||
OR (HL)
|
||||
ICM_XLAT2:
|
||||
INC HL
|
||||
DJNZ ICM_XLAT1
|
||||
POP HL
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
ICM_XTBL .DB $40, $20, $10, $01, $08, $02, $04, $80
|
||||
;
|
||||
;_ _TABLE_____________________________________________________________________________________________________________
|
||||
;
|
||||
ICM_KEYMAP:
|
||||
; POS $00 $01 $02 $03 $04 $05 $06 $07
|
||||
; KEY [0] [1] [2] [3] [4] [5] [6] [7]
|
||||
.DB $41, $02, $42, $82, $04, $44, $84, $08
|
||||
;
|
||||
; POS $08 $09 $0A $0B $0C $0D $0E $0F
|
||||
; KEY [8] [9] [A] [B] [C] [D] [E] [F]
|
||||
.DB $48, $88, $10, $50, $90, $20, $60, $A0
|
||||
;
|
||||
; POS $10 $11 $12 $13 $14 $15 $16 $17
|
||||
; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO]
|
||||
.DB $01, $81, $C1, $C2, $C4, $C8, $D0, $E0
|
||||
;
|
||||
; KBD WORKING STORAGE
|
||||
;
|
||||
ICM_KEYBUF .DB 0
|
||||
;
|
||||
;==================================================================================================
|
||||
; UTILTITY FUNCTIONS
|
||||
;==================================================================================================
|
||||
;
|
||||
;
|
||||
;==================================================================================================
|
||||
; STORAGE
|
||||
;==================================================================================================
|
||||
;
|
||||
; SEG DISPLAY WORKING STORAGE
|
||||
;
|
||||
ICM_PRESENT .DB 0
|
||||
@@ -566,10 +566,14 @@ IDE_STATUS:
|
||||
IDE_DEVICE:
|
||||
LD D,DIODEV_IDE ; D := DEVICE TYPE
|
||||
LD E,(IY+IDE_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01111001 ; ATAPI ATTRIBUTES
|
||||
LD A,(IY+IDE_TYPE) ; CHECK TYPE VALUE
|
||||
CP IDE_TYPEATAPI ; ATAPI?
|
||||
JR Z,IDE_DEVICE1 ; IF SO, DONE
|
||||
LD C,%00110001 ; COMPACTFLASH ATTRIBUTES
|
||||
BIT 0,(IY+IDE_MED) ; TEST CF BIT IN FLAGS
|
||||
LD C,%00000000 ; ASSUME NON-REMOVABLE HARD DISK
|
||||
JR Z,IDE_DEVICE1 ; IF Z, WE ARE DONE
|
||||
LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH
|
||||
JR NZ,IDE_DEVICE1 ; IF SET, DONE
|
||||
LD C,%00110000 ; GENERIC HARD DISK ATTRIBUTES
|
||||
IDE_DEVICE1:
|
||||
LD H,(IY+IDE_MODE) ; H := MODE
|
||||
LD L,(IY+IDE_IOBASE) ; L := BASE I/O ADDRESS
|
||||
@@ -788,6 +792,15 @@ IDE_PKT_RDSEC:
|
||||
PRTS(" PKT$")
|
||||
#ENDIF
|
||||
; SETUP LBA
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,IDE_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
|
||||
LD HL,IDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
|
||||
LD A,(IY+IDE_LBA+2) ; THIRD BYTE OF LBA FIELD IN CFG (MSB)
|
||||
@@ -848,6 +861,15 @@ IDE_PKT_WRSEC:
|
||||
PRTS(" PKT$")
|
||||
#ENDIF
|
||||
; SETUP LBA
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,IDE_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
|
||||
LD HL,IDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
|
||||
LD A,(IY+IDE_LBA+2) ; THIRD BYTE OF LBA FIELD IN CFG (MSB)
|
||||
@@ -873,9 +895,11 @@ IDE_PKT_WRSEC:
|
||||
IDE_SETADDR:
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,IDE_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER
|
||||
; IDE_REG_LBA3 HAS ALREADY BEEN SET
|
||||
|
||||
@@ -344,9 +344,11 @@ IMM_IO:
|
||||
LD (IMM_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,IMM_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; SETUP LBA
|
||||
@@ -405,7 +407,7 @@ IMM_RESET:
|
||||
IMM_DEVICE:
|
||||
LD D,DIODEV_IMM ; D := DEVICE TYPE
|
||||
LD E,(IY+IMM_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01000000 ; C := REMOVABLE HARD DISK
|
||||
LD C,%01111001 ; C := REMOVABLE HARD DISK
|
||||
LD H,(IY+IMM_MODE) ; H := MODE
|
||||
LD L,(IY+IMM_IOBASE) ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
|
||||
@@ -21,9 +21,9 @@ MD_LBA .EQU 2 ; OFFSET OF LBA (DWORD)
|
||||
MD_MID .EQU 6 ; OFFSET OF MEDIA ID (BYTE)
|
||||
MD_ATTRIB .EQU 7 ; OFFSET OF ATTRIBUTE (BYTE)
|
||||
;
|
||||
MD_AROM .EQU %00100000 ; ROM ATTRIBUTE
|
||||
MD_ARAM .EQU %00101000 ; RAM ATTRIBUTE
|
||||
MD_AFSH .EQU %00111000 ; FLASH ATTRIBUTE
|
||||
MD_AROM .EQU %00010100 ; ROM ATTRIBUTE
|
||||
MD_ARAM .EQU %00010101 ; RAM ATTRIBUTE
|
||||
MD_AFSH .EQU %00010111 ; FLASH ATTRIBUTE
|
||||
;
|
||||
MD_FDBG .EQU 0 ; FLASH DEBUG CODE
|
||||
MD_FVBS .EQU 1 ; FLASH VERBOSE OUTPUT
|
||||
@@ -303,9 +303,11 @@ MD_RW1:
|
||||
PUSH BC ; SAVE COUNTERS
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,MD_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
LD HL,(MD_RWFNADR) ; GET PENDING IO FUNCTION ADDRESS
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -340,9 +340,11 @@ PPA_IO:
|
||||
LD (PPA_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,PPA_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; SETUP LBA
|
||||
@@ -402,7 +404,7 @@ PPA_RESET:
|
||||
PPA_DEVICE:
|
||||
LD D,DIODEV_PPA ; D := DEVICE TYPE
|
||||
LD E,(IY+PPA_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01000000 ; C := REMOVABLE HARD DISK
|
||||
LD C,%01111001 ; C := REMOVABLE HARD DISK
|
||||
LD H,(IY+PPA_MODE) ; H := MODE
|
||||
LD L,(IY+PPA_IOBASE) ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
|
||||
@@ -572,10 +572,14 @@ PPIDE_STATUS:
|
||||
PPIDE_DEVICE:
|
||||
LD D,DIODEV_PPIDE ; D := DEVICE TYPE
|
||||
LD E,(IY+PPIDE_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01111001 ; ATAPI ATTRIBUTES
|
||||
LD A,(IY+PPIDE_TYPE) ; CHECK TYPE VALUE
|
||||
CP PPIDE_TYPEATAPI ; ATAPI?
|
||||
JR Z,PPIDE_DEVICE1 ; IF SO, DONE
|
||||
LD C,%00110001 ; COMPACTFLASH ATTRIBUTES
|
||||
BIT 0,(IY+PPIDE_MED) ; TEST CF BIT IN FLAGS
|
||||
LD C,%00000000 ; ASSUME NON-REMOVABLE HARD DISK
|
||||
JR Z,PPIDE_DEVICE1 ; IF Z, WE ARE DONE
|
||||
LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH
|
||||
JR NZ,PPIDE_DEVICE1 ; IF SET, DONE
|
||||
LD C,%00110000 ; GENERIC HARD DISK ATTRIBUTES
|
||||
PPIDE_DEVICE1:
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,(IY+PPIDE_DATALO) ; L := BASE I/O ADDRESS
|
||||
@@ -794,6 +798,15 @@ PPIDE_PKT_RDSEC:
|
||||
PRTS(" PKT$")
|
||||
#ENDIF
|
||||
; SETUP LBA
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,PPIDE_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
|
||||
LD HL,PPIDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
|
||||
LD A,(IY+PPIDE_LBA+2) ; THIRD BYTE OF LBA FIELD IN CFG (MSB)
|
||||
@@ -854,6 +867,15 @@ PPIDE_PKT_WRSEC:
|
||||
PRTS(" PKT$")
|
||||
#ENDIF
|
||||
; SETUP LBA
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,PPIDE_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
|
||||
LD HL,PPIDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
|
||||
LD A,(IY+PPIDE_LBA+2) ; THIRD BYTE OF LBA FIELD IN CFG (MSB)
|
||||
@@ -879,9 +901,11 @@ PPIDE_PKT_WRSEC:
|
||||
PPIDE_SETADDR:
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,PPIDE_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER
|
||||
; IDE_REG_LBA3 HAS ALREADY BEEN SET
|
||||
@@ -1268,19 +1292,22 @@ PPIDE_RESET:
|
||||
LD C,(IY+PPIDE_PPI) ; PPI CONTROL WORD
|
||||
OUT (C),A ; WRITE IT
|
||||
;
|
||||
; IF A DSKYNG IS ACTIVE AND IS ON THE SAME PPI PORT AS THE PPISD BEING
|
||||
; IF A DSKYNG IS ACTIVE AND IS ON THE SAME PPI PORT AS THE PPIDE BEING
|
||||
; RESET, THEN THE DSKYNG WILL ALSO BE RESET. SO, THE RESET CODE IS
|
||||
; BRACKETED WITH CODE TO SAVE AND RESTORE THE STATE OF THE DSKYNG.
|
||||
; THERE IS NO CHECK FOR THE SPECIFIC PPI PORT SINCE IT DOES NO HARM
|
||||
; IF THE DSKYNG IS SAVED AND RESTORED.
|
||||
;
|
||||
; THIS DOES NOT TEST THAT A DSKYNG IS ACTUALLY PRESENT
|
||||
; AND OPERATING -- COULD CAUSE PROBLEMS
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
; SAVE CONTENTS OF DSKY DISPLAY ACROSS RESET
|
||||
#IF (PKDENABLE)
|
||||
; SAVE CONTENTS OF DSKYNG DISPLAY ACROSS RESET
|
||||
LD B,8
|
||||
LD C,0
|
||||
LD HL,DSKY_BUF
|
||||
CALL DSKY_GETSTR
|
||||
CALL PKD_GETSTR
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
@@ -1301,13 +1328,13 @@ PPIDE_RESET:
|
||||
CALL VDELAY
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
; REININT DSKY AND RESTORE CONTENTS
|
||||
CALL DSKY_REINIT
|
||||
#IF (PKDENABLE)
|
||||
; REININT DSKYNG AND RESTORE CONTENTS
|
||||
CALL PKD_REINIT
|
||||
LD B,8
|
||||
LD C,0
|
||||
LD HL,DSKY_BUF
|
||||
CALL DSKY_PUTSTR
|
||||
CALL PKD_PUTSTR
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
;==================================================================================================
|
||||
;
|
||||
; TODO:
|
||||
; 1) ADD SUPPORT FOR DSKY
|
||||
;
|
||||
PPP_IO .EQU PPPBASE + 0 ; PPP DATA I/O (PPI PORT A)
|
||||
PPP_CTL .EQU PPPBASE + 2 ; PPP CTL LINES (PPI PORT C)
|
||||
@@ -689,7 +688,7 @@ PPPSD_RESET:
|
||||
PPPSD_DEVICE:
|
||||
LD D,DIODEV_PPPSD ; D := DEVICE TYPE
|
||||
LD E,(IY+PPPSD_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD
|
||||
LD C,%01110010 ; C := ATTRIBUTES, REMOVABLE, SD CARD
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,PPPBASE ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -942,7 +941,9 @@ PPPSD_SENDBLK:
|
||||
LD A,PPPSD_LBA ; OFFSET OF LBA
|
||||
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
LD B,4
|
||||
PPPSD_SENDBLK1:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
;==================================================================================================
|
||||
;
|
||||
; TODO:
|
||||
; 1) ADD SUPPORT FOR DSKY
|
||||
;
|
||||
PRP_IOBASE .EQU $A8
|
||||
;
|
||||
@@ -546,7 +545,7 @@ PRPSD_RESET:
|
||||
PRPSD_DEVICE:
|
||||
LD D,DIODEV_PRPSD ; D := DEVICE TYPE
|
||||
LD E,(IY+PRPSD_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD
|
||||
LD C,%01110010 ; C := ATTRIBUTES, REMOVABLE, SD CARD
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,PRP_IOBASE ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -876,7 +875,9 @@ PRPSD_SETBLK:
|
||||
LD A,PRPSD_LBA ; OFFSET OF LBA
|
||||
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
OTIR
|
||||
RET
|
||||
|
||||
@@ -178,7 +178,7 @@ RF_GEOM:
|
||||
RF_DEVICE:
|
||||
LD D,DIODEV_RF ; D := DEVICE TYPE
|
||||
LD E,(IY+RF_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%00110000 ; C := ATTRIBUTES, NON-REMOVABLE RAM FLOPPY
|
||||
LD C,%00010110 ; C := ATTRIBUTES, NON-REMOVABLE RAM FLOPPY
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,(IY+RF_IOAD) ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -314,9 +314,11 @@ RF_SETIO:
|
||||
RF_SETADR:
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
LD A,RF_LBA
|
||||
CALL LDHLIYA
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
LD A,(RF_IO) ; OUTPUT THE LOGICAL BLOCK
|
||||
|
||||
@@ -47,7 +47,8 @@ cmdbuf .equ $80 ; cmd buf is in second half of page zero
|
||||
cmdmax .equ 60 ; max cmd len (arbitrary), must be < bufsiz
|
||||
bufsiz .equ $80 ; size of cmd buf
|
||||
;
|
||||
int_im1 .equ $FF00 ; IM1 vector target for RomWBW HBIOS proxy
|
||||
;;int_im1 .equ $FF00 ; IM1 vector target for RomWBW HBIOS proxy
|
||||
hbx_int .equ $FF60 ; IM1 vector target for RomWBW HBIOS proxy
|
||||
;
|
||||
bid_cur .equ -1 ; used below to indicate current bank
|
||||
;
|
||||
@@ -77,7 +78,8 @@ bid_cur .equ -1 ; used below to indicate current bank
|
||||
.fill ($38 - $)
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (INTMODE == 1)
|
||||
jp int_im1 ; go to handler in hi mem
|
||||
call hbx_int ; handle im1 interrupts
|
||||
.db $10 << 2 ; use special vector #16
|
||||
#else
|
||||
ret ; return w/ ints left disabled
|
||||
#endif
|
||||
@@ -170,6 +172,16 @@ start1:
|
||||
#if (INTMODE == 1)
|
||||
ei
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
; Check for DSKY and set flag
|
||||
ld b,BF_SYSGET ; HBIOS func: get
|
||||
ld c,BF_SYSGET_DSKYCNT ; get DSKY count
|
||||
rst 08 ; do it
|
||||
ld a,e ; put in A
|
||||
ld (dskyact),a ; save it
|
||||
#endif
|
||||
|
||||
;
|
||||
;=======================================================================
|
||||
; Loader prompt
|
||||
@@ -231,18 +243,11 @@ prompt:
|
||||
call clrbuf ; zero fill the cmd buffer
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
call DSKY_PREINIT ; *** TEMPORARY ***
|
||||
call DSKY_RESET ; clear DSKY
|
||||
ld hl,msg_sel ; boot select msg
|
||||
call DSKY_SHOW ; show on DSKY
|
||||
|
||||
#if (DSKYMODE == DSKYMODE_NG)
|
||||
call DSKY_PUTLED
|
||||
.db $3f,$3f,$3f,$3f,$00,$00,$00,$00
|
||||
call DSKY_BEEP
|
||||
call DSKY_L2ON
|
||||
#endif
|
||||
|
||||
call dsky_show ; show on DSKY
|
||||
call dsky_highlightallkeys
|
||||
call dsky_beep
|
||||
call dsky_l2on
|
||||
#endif
|
||||
;
|
||||
wtkey:
|
||||
@@ -251,8 +256,7 @@ wtkey:
|
||||
jr nz,concmd ; if pending, do console command
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
call DSKY_STAT ; check DSKY for keypress
|
||||
or a ; set flags
|
||||
call dsky_stat ; check DSKY for keypress
|
||||
jp nz,dskycmd ; if pending, do DSKY command
|
||||
#endif
|
||||
;
|
||||
@@ -295,11 +299,8 @@ concmd:
|
||||
call clrled ; clear LEDs
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
#if (DSKYMODE == DSKYMODE_NG)
|
||||
call DSKY_PUTLED
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00
|
||||
call DSKY_L2OFF
|
||||
#endif
|
||||
call dsky_highlightkeysoff
|
||||
call dsky_l2off
|
||||
#endif
|
||||
;
|
||||
; Get a command line from console and handle it
|
||||
@@ -450,10 +451,9 @@ fp_hdboot1:
|
||||
push bc ; save loop control
|
||||
ld b,BF_DIODEVICE ; HBIOS Disk Device func
|
||||
rst 08 ; unit in C, do it
|
||||
bit 5,C ; high capacity disk?
|
||||
pop bc ; restore loop control
|
||||
ld a,d ; device type to A
|
||||
cp DIODEV_IDE ; type IDE or greater is HD
|
||||
jr c,fp_hdboot2 ; if not, continue loop
|
||||
jr z,fp_hdboot2 ; if not, continue loop
|
||||
push bc ; save loop control
|
||||
ld b,BF_DIOMEDIA ; HBIOS Sense Media
|
||||
ld e,1 ; perform media discovery
|
||||
@@ -488,11 +488,10 @@ fp_flopboot1:
|
||||
push de ; save floppy down ctr
|
||||
ld b,BF_DIODEVICE ; HBIOS Disk Device func
|
||||
rst 08 ; unit in C, do it
|
||||
ld a,d ; device type to A
|
||||
bit 7,c ; floppy device?
|
||||
pop de ; restore loop control
|
||||
pop bc ; restore floppy down ctr
|
||||
cp DIODEV_FD ; type FD?
|
||||
jr nz,fp_flopboot3 ; if not floppy, skip
|
||||
jr z,fp_flopboot3 ; if not floppy, skip
|
||||
dec e ; decrement down ctr
|
||||
jr z,fp_flopboot2 ; if ctr expired, boot this unit
|
||||
fp_flopboot3:
|
||||
@@ -518,15 +517,15 @@ fp_flopboot2:
|
||||
dskycmd:
|
||||
call clrled ; clear LEDs
|
||||
;
|
||||
call DSKY_GETKEY ; get DSKY key
|
||||
call dsky_getkey ; get DSKY key
|
||||
ld a,e ; put in A
|
||||
cp $FF ; check for error
|
||||
ret z ; abort if so
|
||||
;
|
||||
#if (DSKYMODE == DSKYMODE_NG)
|
||||
call DSKY_PUTLED
|
||||
.db $00,$00,$00,$00,$00,$00,$00,$00
|
||||
call DSKY_L2OFF
|
||||
#endif
|
||||
push af
|
||||
call dsky_highlightkeysoff
|
||||
call dsky_l2off
|
||||
pop af
|
||||
;
|
||||
; Attempt built-in commands
|
||||
cp KY_BO ; reboot system
|
||||
@@ -863,7 +862,7 @@ reboot:
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
ld hl,msg_boot ; point to boot message
|
||||
call DSKY_SHOW ; display message
|
||||
call dsky_show ; display message
|
||||
#endif
|
||||
;
|
||||
; cold boot system
|
||||
@@ -895,7 +894,7 @@ romload:
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
ld hl,msg_load ; point to load message
|
||||
call DSKY_SHOW ; display message
|
||||
call dsky_show ; display message
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
@@ -979,7 +978,7 @@ romload1:
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
ld hl,msg_go ; point to go message
|
||||
call DSKY_SHOW ; display message
|
||||
call dsky_show ; display message
|
||||
#endif
|
||||
;
|
||||
ld l,(ix+ra_ent) ; HL := app entry address
|
||||
@@ -1004,7 +1003,7 @@ diskboot:
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
ld hl,msg_load ; point to load message
|
||||
call DSKY_SHOW ; display message
|
||||
call dsky_show ; display message
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
@@ -1017,6 +1016,18 @@ diskboot:
|
||||
cp e ; compare to count
|
||||
jp nc,err_nodisk ; handle no disk err
|
||||
;
|
||||
; If non-zero slice requested, confirm device can handle it
|
||||
ld a,(bootslice) ; get slice
|
||||
or a ; set flags
|
||||
jr z,diskboot0 ; slice 0, skip slice check
|
||||
ld a,(bootunit) ; get disk unit
|
||||
ld c,a ; put in C for func call
|
||||
ld b,BF_DIODEVICE ; HBIOS func: device info
|
||||
rst 08 ; do it
|
||||
bit 5,c ; high capacity device?
|
||||
jp z,err_noslice ; no such slice, handle err
|
||||
;
|
||||
diskboot0:
|
||||
; Sense media
|
||||
ld a,(bootunit) ; get boot disk unit
|
||||
ld c,a ; put in C for func call
|
||||
@@ -1026,18 +1037,6 @@ diskboot:
|
||||
jp nz,err_diskio ; handle error
|
||||
ld a,e ; media id to A
|
||||
ld (mediaid),a ; save media id
|
||||
;
|
||||
; If non-zero slice requested, confirm device can handle it
|
||||
ld a,(bootslice) ; get slice
|
||||
or a ; set flags
|
||||
jr z,diskboot1 ; slice 0, skip slice check
|
||||
ld a,(bootunit) ; get disk unit
|
||||
ld c,a ; put in C for func call
|
||||
ld b,BF_DIODEVICE ; HBIOS func: device info
|
||||
rst 08 ; do it
|
||||
ld a,d ; device type to A
|
||||
cp DIODEV_IDE ; IDE is max slice device type
|
||||
jp c,err_noslice ; no such slice, handle err
|
||||
;
|
||||
#endif
|
||||
;
|
||||
@@ -1288,7 +1287,7 @@ diskboot10:
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
ld hl,msg_go ; point to go message
|
||||
call DSKY_SHOW ; display message
|
||||
call dsky_show ; display message
|
||||
#endif
|
||||
;
|
||||
; Jump to entry vector
|
||||
@@ -2063,6 +2062,60 @@ devunk .db "UNK",0
|
||||
str_devlst .db "\r\n\r\nDisk Devices:",0
|
||||
;
|
||||
#endif
|
||||
|
||||
#if (DSKYENABLE)
|
||||
|
||||
;
|
||||
;=======================================================================
|
||||
; DSKY interface routines
|
||||
;=======================================================================
|
||||
;
|
||||
dsky_stat:
|
||||
ld b,BF_DSKYSTAT
|
||||
jr dsky_hbcall
|
||||
;
|
||||
dsky_getkey:
|
||||
ld b,BF_DSKYGETKEY
|
||||
jr dsky_hbcall
|
||||
;
|
||||
dsky_show:
|
||||
ld b,BF_DSKYSHOWSEG
|
||||
jr dsky_hbcall
|
||||
;
|
||||
dsky_beep:
|
||||
ld b,BF_DSKYBEEP
|
||||
jr dsky_hbcall
|
||||
;
|
||||
dsky_l2on:
|
||||
ld e,1
|
||||
jr dsky_statled
|
||||
dsky_l2off:
|
||||
ld e,0
|
||||
dsky_statled:
|
||||
ld b,BF_DSKYSTATLED
|
||||
ld d,1
|
||||
jr dsky_hbcall
|
||||
;
|
||||
dsky_putled:
|
||||
ld b,BF_DSKYKEYLEDS
|
||||
jr dsky_hbcall
|
||||
;
|
||||
dsky_highlightallkeys:
|
||||
ld hl,dsky_highlightallkeyleds
|
||||
jr dsky_putled
|
||||
;
|
||||
dsky_highlightkeysoff:
|
||||
ld hl,dsky_highlightkeyledsoff
|
||||
jr dsky_putled
|
||||
;
|
||||
dsky_hbcall:
|
||||
ld a,(dskyact)
|
||||
or a
|
||||
ret z
|
||||
rst 08
|
||||
ret
|
||||
;
|
||||
#endif
|
||||
;
|
||||
;=======================================================================
|
||||
; Error handlers
|
||||
@@ -2118,22 +2171,6 @@ str_err_sig .db "No system image on disk",0
|
||||
str_err_api .db "Unexpected hardware BIOS API failure",0
|
||||
;
|
||||
;=======================================================================
|
||||
; Includes
|
||||
;=======================================================================
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
#define DSKY_KBD
|
||||
#if (DSKYMODE == DSKYMODE_V1)
|
||||
VDELAY .equ vdelay
|
||||
DLY2 .equ dly2
|
||||
#include "dsky.asm"
|
||||
#endif
|
||||
#if (DSKYMODE == DSKYMODE_NG)
|
||||
#include "dskyng.asm"
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
;=======================================================================
|
||||
; Working data storage (initialized)
|
||||
;=======================================================================
|
||||
;
|
||||
@@ -2181,21 +2218,20 @@ str_help .db "\r\n"
|
||||
.db 0
|
||||
;
|
||||
#if (DSKYENABLE)
|
||||
#if (DSKYMODE == DSKYMODE_V1)
|
||||
msg_sel .db $7f,$1d,$1d,$0f,$6c,$00,$00,$00 ; "boot? "
|
||||
msg_boot .db $7f,$1d,$1d,$0f,$80,$80,$80,$00 ; "boot... "
|
||||
msg_load .db $0b,$1d,$7d,$3d,$80,$80,$80,$00 ; "load... "
|
||||
msg_go .db $5b,$1d,$80,$80,$80,$00,$00,$00 ; "go... "
|
||||
#endif
|
||||
#if (DSKYMODE == DSKYMODE_NG)
|
||||
msg_sel .db $7f,$5c,$5c,$78,$53,$00,$00,$00 ; "boot? "
|
||||
msg_boot .db $7f,$5c,$5c,$78,$80,$80,$80,$00 ; "boot... "
|
||||
msg_load .db $38,$5c,$5f,$5e,$80,$80,$80,$00 ; "load... "
|
||||
msg_go .db $3d,$5c,$80,$80,$80,$00,$00,$00 ; "go... "
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
;=======================================================================
|
||||
; DSKY keypad led matrix masks
|
||||
;=======================================================================
|
||||
;
|
||||
dsky_highlightallkeyleds .db $3f,$3f,$3f,$3f,$00,$00,$00,$00
|
||||
dsky_highlightkeyledsoff .db $00,$00,$00,$00,$00,$00,$00,$00
|
||||
;
|
||||
;=======================================================================
|
||||
; ROM Application Table
|
||||
;=======================================================================
|
||||
;
|
||||
@@ -2344,6 +2380,7 @@ bootslice .db 0 ; boot disk slice
|
||||
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
|
||||
;
|
||||
;=======================================================================
|
||||
; Pad remainder of ROM Loader
|
||||
|
||||
3125
Source/HBIOS/s100mon.z80
Normal file
3125
Source/HBIOS/s100mon.z80
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,14 +9,14 @@
|
||||
; - TEST XC CARD TYPE DETECTION
|
||||
; - TRY TO GET INIT TO FAIL, REMOVE DELAYS AT START OF GOIDLE?
|
||||
;
|
||||
;----------------------------------------------------------------------------------------------
|
||||
; SD Signal Active JUHA N8 CSIO PPI UART DSD MK4 SC MT
|
||||
; ------------ ------- ------- ------- ------- ------- ------- ------- ------- ------- -------
|
||||
; CS (DAT3) LO -> RTC:2 RTC:2 RTC:2 ~PC:4 ~MCR:3 OPR:2 SD:2 ~RTC:2/3OPR:4/5
|
||||
; CLK HI -> RTC:1 RTC:1 CSIO PC:1 ~MCR:2 OPR:1 CSIO CSIO SPI
|
||||
; DI (CMD) HI -> RTC:0 RTC:0 CSIO PC:0 ~MCR:0 OPR:0 CSIO CSIO SPI
|
||||
; DO (DAT0) HI -> RTC:7 RTC:6 CSIO PB:7 ~MSR:5 OPR:0 CSIO CSIO SPI
|
||||
;----------------------------------------------------------------------------------------------
|
||||
;-----------------------------------------------------------------------------------------------------
|
||||
; SD Signal Active JUHA N8 CSIO PPI UART DSD MK4 SC MT PIO
|
||||
; ------------ ------- ------- ------- ------- ------- ------- ------- ------- ------- --------------
|
||||
; CS (DAT3) LO -> RTC:2 RTC:2 RTC:2 ~PC:4 ~MCR:3 OPR:2 SD:2 ~RTC:2/3OPR:4/5~OPR:3
|
||||
; CLK HI -> RTC:1 RTC:1 CSIO PC:1 ~MCR:2 OPR:1 CSIO CSIO SPI OPR:4
|
||||
; DI (CMD) HI -> RTC:0 RTC:0 CSIO PC:0 ~MCR:0 OPR:0 CSIO CSIO SPI OPR:0
|
||||
; DO (DAT0) HI -> RTC:7 RTC:6 CSIO PB:7 ~MSR:5 OPR:0 CSIO CSIO SPI OPR:7
|
||||
;-----------------------------------------------------------------------------------------------------
|
||||
;
|
||||
; CS = CHIP SELECT (AKA DAT3 FOR NON-SPI MODE)
|
||||
; CLK = CLOCK
|
||||
@@ -167,6 +167,7 @@ RTCDEF .SET RTCDEF | SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE
|
||||
SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS)
|
||||
SD_PPIBASE .EQU SDPPIBASE ; BASE IO PORT FOR PPI
|
||||
SD_PPIB .EQU SDPPIBASE + 1 ; PPI PORT B (INPUT: DOUT)
|
||||
SD_PPIB .EQU SDPPIBASE + 1 ; PPI PORT B (INPUT: DOUT)
|
||||
SD_PPIC .EQU SDPPIBASE + 2 ; PPI PORT C (OUTPUT: CS, CLK, DIN)
|
||||
SD_PPIX .EQU SDPPIBASE + 3 ; PPI CONTROL PORT
|
||||
SD_OPRREG .EQU SD_PPIC ; PPI PORT C IS OPR REG
|
||||
@@ -298,7 +299,10 @@ SD_INVCS .EQU FALSE ; INVERT CS
|
||||
SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS)
|
||||
SD_IOBASE .EQU $69 ; IO BASE ADDRESS FOR SD INTERFACE
|
||||
SD_OPRREG .EQU SD_IOBASE ; OUTPUT PORT (OUTPUT: CS, CLK, DIN)
|
||||
SD_OPRDEF .EQU %11111111 ; OUTPUT PORT DEFAULT STATE
|
||||
;--- WBW
|
||||
;SD_OPRDEF .EQU %11111111 ; OUTPUT PORT DEFAULT STATE
|
||||
SD_OPRDEF .EQU %11101111 ; OUTPUT PORT DEFAULT STATE
|
||||
;---
|
||||
SD_INPREG .EQU SD_IOBASE ; INPUT REGISTER
|
||||
SD_CS0 .EQU %00001000 ; SELECT
|
||||
SD_CLK .EQU %00010000 ; CLOCK
|
||||
@@ -928,7 +932,7 @@ SD_RESET:
|
||||
SD_DEVICE:
|
||||
LD D,DIODEV_SD ; D := DEVICE TYPE
|
||||
LD E,(IY+SD_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD
|
||||
LD C,%01110010 ; C := ATTRIBUTES, REMOVABLE, SD CARD
|
||||
LD H,SDMODE ; H := MODE
|
||||
LD L,(SD_IOBASE) ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -1382,7 +1386,9 @@ SD_SETADDR:
|
||||
LD A,SD_LBA ; OFFSET OF LBA VALUE
|
||||
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
CALL LD32 ; LOAD IT TO DE:HL, AF IS TRASHED
|
||||
POP AF ; GET CARD TYPE BACK
|
||||
@@ -1564,11 +1570,6 @@ SD_EXECCMD3:
|
||||
#IF (SDTRACE >= 3)
|
||||
CALL SD_PRTRC ; IF MAX TRACING, PRINT RC
|
||||
#ENDIF
|
||||
;;#IF (DSKYENABLE)
|
||||
;; PUSH AF
|
||||
;; CALL SD_DSKY ; IF USING DSKY, SHOW IT THERE
|
||||
;; POP AF
|
||||
;;#ENDIF
|
||||
AND ~$01 ; MASK OFF IDLE BIT AND SET FLAGS
|
||||
RET Z ; IF RC = 0, NO ERROR, RETURN
|
||||
CALL SD_DONE ; IF ERROR, COMPLETE TRANSACTION
|
||||
@@ -1804,6 +1805,7 @@ SD_SETUP:
|
||||
;
|
||||
#IF (SDMODE == SDMODE_PIO)
|
||||
LD A,SD_OPRDEF ; All output bits high
|
||||
LD (SD_OPRVAL),A ; WBW
|
||||
OUT (SD_OPRREG),A
|
||||
LD A,$CF ; Port B mode 3
|
||||
OUT (SD_DDR),A
|
||||
@@ -2342,29 +2344,6 @@ SD_PRTPREFIX:
|
||||
CALL PC_COLON
|
||||
POP AF
|
||||
RET
|
||||
;;;
|
||||
;;; DISPLAY COMMAND, LOW ORDER WORD OF PARMS, AND RC
|
||||
;;;
|
||||
;;#IF (DSKYENABLE)
|
||||
;;SD_DSKY:
|
||||
;; PUSH AF
|
||||
;; PUSH HL
|
||||
;; LD HL,DSKY_HEXBUF
|
||||
;; LD A,(SD_CMD)
|
||||
;; LD (HL),A
|
||||
;; INC HL
|
||||
;; LD A,(SD_CMDP2)
|
||||
;; LD (HL),A
|
||||
;; INC HL
|
||||
;; LD A,(SD_CMDP3)
|
||||
;; LD (HL),A
|
||||
;; INC HL
|
||||
;; LD A,(SD_RC)
|
||||
;; CALL DSKY_HEXOUT
|
||||
;; POP HL
|
||||
;; POP AF
|
||||
;; RET
|
||||
;;#ENDIF
|
||||
;
|
||||
;=============================================================================
|
||||
; STRING DATA
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
; 13. MBC Andrew Lynch's Multi Board Computer
|
||||
; 14. RPH Andrew Lynch's RHYOPHYRE Graphics Computer
|
||||
; 15. Z80RETRO Peter Wilson's Z80-Retro Computer
|
||||
; 16. S100 S100 Computers Z180-based System
|
||||
; 17. DUO Andrew Lynch's Duodyne Computer
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
@@ -728,12 +730,13 @@ MON_SERIAL .EQU MON_LOC + (1 * 3) ; MONITOR ENTRY (SERIAL PORT)
|
||||
;
|
||||
; INTERRUPT MODE 2 SLOT ASSIGNMENTS
|
||||
;
|
||||
#IF ((INTMODE == 2) | (INTMODE == 3))
|
||||
#IF (((CPUFAM == CPU_Z180) | (CPUFAM == CPU_Z280)) & (INTMODE > 0))
|
||||
|
||||
#IF ((CPUFAM == CPU_Z180) | (CPUFAM == CPU_Z280))
|
||||
; NOTE THAT Z180 PROCESSES ALL INTERNAL INTERRUPTS JUST LIKE
|
||||
; IM2 EVEN WHEN CHIP IS IN IM1 MODE. SO WE INCLUDE THE IM2
|
||||
; INTERRUPT ASSIGNMENTS FOR IM1 BELOW.
|
||||
|
||||
; Z180-BASED SYSTEMS
|
||||
|
||||
INT_INT1 .EQU 0 ; Z180 INT 1
|
||||
INT_INT2 .EQU 1 ; Z180 INT 2
|
||||
INT_TIM0 .EQU 2 ; Z180 TIMER 0
|
||||
@@ -750,19 +753,18 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
INT_SIO0 .EQU 13 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 14 ; ZILOG SIO 1, CHANNEL A & B
|
||||
|
||||
#ELSE
|
||||
#ENDIF
|
||||
|
||||
; Z80-BASED SYSTEMS
|
||||
|
||||
|
||||
#IF (PLATFORM == PLT_MBC)
|
||||
#IF ((CPUFAM == CPU_Z80) & (INTMODE == 2))
|
||||
#IF (PLATFORM == PLT_MBC)
|
||||
|
||||
; MBC Z80
|
||||
;INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A
|
||||
;INT_CTC0B .EQU 1 ; ZILOG CTC 0, CHANNEL B
|
||||
;INT_CTC0C .EQU 2 ; ZILOG CTC 0, CHANNEL C
|
||||
;INT_CTC0D .EQU 3 ; ZILOG CTC 0, CHANNEL D
|
||||
INT_UART0 .EQU 4 ; MBC UART 0
|
||||
INT_UART1 .EQU 5 ; MBC UART 1
|
||||
INT_UART0 .EQU 4 ; UART 0
|
||||
INT_UART1 .EQU 5 ; UART 1
|
||||
INT_SIO0 .EQU 8 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 9 ; ZILOG SIO 1, CHANNEL A & B
|
||||
INT_CTC0A .EQU 12 ; ZILOG CTC 0, CHANNEL A
|
||||
@@ -774,14 +776,15 @@ INT_CTC0D .EQU 15 ; ZILOG CTC 0, CHANNEL D
|
||||
;INT_PIO1A .EQU 11 ; ZILOG PIO 1, CHANNEL A
|
||||
;INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
|
||||
#ELSE
|
||||
#ELSE
|
||||
|
||||
; GENERIC Z80
|
||||
INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A
|
||||
INT_CTC0B .EQU 1 ; ZILOG CTC 0, CHANNEL B
|
||||
INT_CTC0C .EQU 2 ; ZILOG CTC 0, CHANNEL C
|
||||
INT_CTC0D .EQU 3 ; ZILOG CTC 0, CHANNEL D
|
||||
INT_UART0 .EQU 4 ; MBC UART 0
|
||||
INT_UART1 .EQU 5 ; MBC UART 1
|
||||
INT_UART0 .EQU 4 ; UART 0
|
||||
INT_UART1 .EQU 5 ; UART 1
|
||||
INT_SIO0 .EQU 7 ; ZILOG SIO 0, CHANNEL A & B
|
||||
INT_SIO1 .EQU 8 ; ZILOG SIO 1, CHANNEL A & B
|
||||
INT_PIO0A .EQU 9 ; ZILOG PIO 0, CHANNEL A
|
||||
@@ -790,13 +793,11 @@ INT_PIO1A .EQU 11 ; ZILOG PIO 1, CHANNEL A
|
||||
INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
|
||||
#DEFINE IVT(INTX) HB_IVT+(INTX * 4)+1
|
||||
#DEFINE VEC(INTX) INTX*2
|
||||
|
||||
#ENDIF
|
||||
;
|
||||
; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)
|
||||
; DIV 1280, 14KHZ @ 18MHZ CLK
|
||||
|
||||
@@ -418,7 +418,9 @@ SYQ_IO:
|
||||
LD A,SYQ_LBA ; LBA OFFSET IN CONFIG
|
||||
CALL LDHLIYA ; POINT TO LBA DWORD
|
||||
#IF (DSKYENABLE)
|
||||
#IF (DSKYDSKACT)
|
||||
CALL HB_DSKACT ; SHOW ACTIVITY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
CALL LD32 ; SET DE:HL TO LBA
|
||||
;
|
||||
@@ -461,7 +463,7 @@ SYQ_RESET:
|
||||
SYQ_DEVICE:
|
||||
LD D,DIODEV_SYQ ; D := DEVICE TYPE
|
||||
LD E,(IY+SYQ_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
LD C,%01000000 ; C := REMOVABLE HARD DISK
|
||||
LD C,%01111001 ; C := REMOVABLE HARD DISK
|
||||
LD H,(IY+SYQ_MODE) ; H := MODE
|
||||
LD L,(IY+SYQ_IOBASE) ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
|
||||
@@ -14,6 +14,13 @@ call BuildDisk.cmd cpm3 fd wbw_fd144 ..\cpm3\cpmldr.sys || exit /b
|
||||
call BuildDisk.cmd zpm3 fd wbw_fd144 ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd qpm fd wbw_fd144 d_qpm\u0\qpm.sys || exit /b
|
||||
call BuildDisk.cmd z80asm hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd aztecc hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd hitechc hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd tpascal hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd games hd wbw_fd144 || exit /b
|
||||
|
||||
echo.
|
||||
echo Building Hard Disk Images (512 directory entry format)...
|
||||
@@ -26,6 +33,13 @@ call BuildDisk.cmd zpm3 hd wbw_hd512 ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd dos65 hd wbw_hd512 ..\zsdos\zsys_wbw.sys || exit /b
|
||||
call BuildDisk.cmd qpm hd wbw_hd512 d_qpm\u0\qpm.sys || exit /b
|
||||
call BuildDisk.cmd z80asm hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd aztecc hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd hitechc hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd tpascal hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd games hd wbw_hd512 || exit /b
|
||||
|
||||
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd512 || exit /b
|
||||
|
||||
@@ -43,6 +57,13 @@ call BuildDisk.cmd cpm3 hd wbw_hd1k ..\cpm3\cpmldr.sys || exit /b
|
||||
call BuildDisk.cmd zpm3 hd wbw_hd1k ..\zpm3\zpmldr.sys || exit /b
|
||||
call BuildDisk.cmd ws4 hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd qpm hd wbw_hd1k d_qpm\u0\qpm.sys || exit /b
|
||||
call BuildDisk.cmd z80asm hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd aztecc hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd hitechc hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd tpascal hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd games hd wbw_hd1k || exit /b
|
||||
|
||||
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1k || exit /b
|
||||
|
||||
|
||||
BIN
Source/Images/Common/UTILS/BBCBASIC.COM
Normal file
BIN
Source/Images/Common/UTILS/BBCBASIC.COM
Normal file
Binary file not shown.
369
Source/Images/Common/UTILS/BBCBASIC.TXT
Normal file
369
Source/Images/Common/UTILS/BBCBASIC.TXT
Normal file
@@ -0,0 +1,369 @@
|
||||
BBC BASIC (Z80)
|
||||
|
||||
Generic CP/M Version 3.00
|
||||
|
||||
(C) Copyright R.T.Russell 1982-1999
|
||||
|
||||
1. INTRODUCTION
|
||||
|
||||
BBC BASIC (Z80) has been designed to be as compatible as possible with
|
||||
Version 4 of the 6502 BBC BASIC resident in the BBC Micro Master series.
|
||||
The language syntax is not always identical to that of the 6502 version,
|
||||
but in most cases the Z80 version is more tolerant.
|
||||
|
||||
BBC BASIC (Z80) is as machine independent as possible and, as supplied,
|
||||
it will run on any CP/M 2.2 (or later) system using a Z80 processor
|
||||
(checks are carried out to ensure that the processor is a Z80 and that
|
||||
the version of CP/M is at least 2.2). It is minimally configured for an
|
||||
ADM3a-compatible VDU.
|
||||
|
||||
Few CP/M systems offer colour graphics of the quality provided as
|
||||
standard on the BBC Microcomputer, and no software can provide colour
|
||||
high-resolution graphics from a monochrome character-orientated computer.
|
||||
However, many CP/M system users are interested in the advanced program
|
||||
structures available from BBC BASIC and, within the limitations of the
|
||||
host computer, BBC BASIC (Z80) provides the programming structures and
|
||||
the non-graphic commands and functions specified for BBC BASIC.
|
||||
|
||||
In order to make full use of the facilities available in BBC BASIC (Z80)
|
||||
it is necessary to install a small patch to adapt it to the capabilities
|
||||
of the host computer. The source code of the patch present in the
|
||||
distribution version is supplied as BBCDIST.MAC.
|
||||
|
||||
This documentation should be read in conjunction with a standard BBC
|
||||
BASIC manual. Only those features which differ from the standard Acorn
|
||||
versions are documented here.
|
||||
|
||||
|
||||
2. MEMORY UTILISATION
|
||||
|
||||
BBC BASIC (Z80) requires about 16 Kbytes of code space, resulting in a
|
||||
value of PAGE of about &3E00. The remainder of the user memory is
|
||||
available for BASIC programs, variables (heap) and stack. Depending on
|
||||
the system configuration, HIMEM can have a value up to &FE00.
|
||||
|
||||
|
||||
3. COMMANDS, STATEMENTS AND FUNCTIONS
|
||||
|
||||
The syntax of BASIC commands, statements and functions is in most cases
|
||||
identical to that of the BBC Micro version (BASIC 4). The few
|
||||
differences are documented here:
|
||||
|
||||
ADVAL
|
||||
This function is not implemented.
|
||||
|
||||
CALL
|
||||
CALL sets up a table in RAM containing details of the parameters; the
|
||||
processor's IX register is set to the address of this parameter table.
|
||||
The other processor registers are initialised as follows:
|
||||
|
||||
A is initialised to the least significant byte of A%
|
||||
B is initialised to the least significant byte of B%
|
||||
C is initialised to the least significant byte of C%
|
||||
D is initialised to the least significant byte of D%
|
||||
E is initialised to the least significant byte of E%
|
||||
F is initialised to the least significant byte of F%
|
||||
H is initialised to the least significant byte of H%
|
||||
L is initialised to the least significant byte of L%
|
||||
|
||||
The parameter types are:
|
||||
|
||||
Code No. Parameter Type Example
|
||||
0 Byte (8 bits) ?A%
|
||||
4 Word (32 bits) !A% or A%
|
||||
5 Real (40 bits) A
|
||||
128 Fixed string $A%
|
||||
129 Movable string A$
|
||||
|
||||
On entry to the subroutine the parameter table contains the following
|
||||
values:
|
||||
|
||||
Number of parameters 1 byte (at IX)
|
||||
|
||||
Parameter type 1 byte (at IX+1)
|
||||
Parameter address 2 bytes (at IX+2, IX+3, LSB first)
|
||||
|
||||
Parameter type ) repeated as often as necessary
|
||||
Parameter address )
|
||||
|
||||
Except in the case of a movable string (normal string variable), the
|
||||
parameter address given is the absolute address at which the item is
|
||||
stored. In the case of movable strings (type 129) it is the address of a
|
||||
4-byte parameter block containing the current length, the maximum length
|
||||
and the start address of the string (LSB first) in that order.
|
||||
|
||||
Integer variables are stored in twos complement form with their least
|
||||
significant byte first.
|
||||
|
||||
Fixed strings are stored as the characters of the string followed by a
|
||||
carriage return (&0D).
|
||||
|
||||
Floating point variables are stored in binary floating point format with
|
||||
their least significant byte first; the fifth byte is the exponent. The
|
||||
mantissa is stored as a binary fraction in sign and magnitude format.
|
||||
Bit 7 of the most significant byte is the sign bit and, for the purposes
|
||||
of calculating the magnitude of the number, this bit is assumed to be set
|
||||
to one. The exponent is stored as an integer in excess 127 format (to
|
||||
find the exponent subtract 127 from the value in the fifth byte).
|
||||
|
||||
If the exponent byte of a floating point number is zero, the number is an
|
||||
integer stored in integer format in the mantissa bytes. Thus an integer
|
||||
can be represented in two different ways in a real variable. For example
|
||||
the value +5 can be stored as:
|
||||
|
||||
05 00 00 00 00 Integer 5
|
||||
00 00 00 20 82 (0.5 + 0.125) * 2^3
|
||||
|
||||
COLOUR (COLOR)
|
||||
This statement is not implemented.
|
||||
|
||||
DRAW
|
||||
This statement is not implemented.
|
||||
|
||||
EDIT
|
||||
A command to edit or concatenate and edit the specified program line(s).
|
||||
The specified lines (including their line numbers) are listed as a single
|
||||
line. By changing only the line number you can use EDIT to duplicate a
|
||||
line.
|
||||
|
||||
EDIT 230
|
||||
EDIT 200,230
|
||||
|
||||
The following control functions are active both in the EDIT mode and in
|
||||
the immediate entry mode (i.e. at the BASIC prompt):
|
||||
|
||||
Move the cursor one character position to the left
|
||||
Move the cursor one character position to the right
|
||||
Move the cursor to the start of the line
|
||||
Move the cursor to the end of the line
|
||||
Insert a space at the current cursor position
|
||||
Delete the character at the current cursor position
|
||||
Backspace and delete the character to the left of the cursor
|
||||
Delete all characters to the left of the cursor
|
||||
Delete all characters from the cursor to the end of the line
|
||||
|
||||
The choice of which keys activate these functions is made when BBC BASIC
|
||||
is configured for a particular system. The distribution version uses ^H,
|
||||
^I, ^K, ^J, ^A, ^E, DEL (&7F), ^L and ^X.
|
||||
|
||||
To exit EDIT mode and replace the edited line, type RETURN (ENTER).
|
||||
|
||||
To abort the edit and leave the line unchanged, type ESCape.
|
||||
|
||||
ENVELOPE
|
||||
This statement is not implemented.
|
||||
|
||||
GET
|
||||
This function waits for a character to be typed at the keyboard, and
|
||||
returns the ASCII code.
|
||||
|
||||
GET can also be used to read data from a processor I/O port; full 16-bit
|
||||
port addressing is available:
|
||||
|
||||
N% = GET(X%) : REM input from port X%
|
||||
|
||||
INKEY
|
||||
This function waits for a specified maximum number of centiseconds for a
|
||||
character to be typed at the keyboard. If no character is typed in that
|
||||
time, the value -1 is returned. In the distribution version the delay is
|
||||
determined by a simple software timing loop, and may be very inaccurate.
|
||||
The customisation patch allows this to be adjusted to suit the system in
|
||||
use.
|
||||
|
||||
INPUT#
|
||||
The format of data files is different from that used by the BBC Micro, in
|
||||
part to improve compatibility with standard CP/M files. Numeric values
|
||||
are stored as five bytes in the format documented under CALL; if the
|
||||
fifth byte is zero the value is an integer. Strings are stored as the
|
||||
characters of the string (in the correct order!) followed by a carriage
|
||||
return (&0D).
|
||||
|
||||
MODE
|
||||
This statement is not implemented.
|
||||
|
||||
MOVE
|
||||
This statement is not implemented.
|
||||
|
||||
PLOT
|
||||
This statement is not implemented.
|
||||
|
||||
POINT
|
||||
This function is not implemented.
|
||||
|
||||
PRINT#
|
||||
The format of data files is different from that used by the BBC Micro, in
|
||||
part to improve compatibility with standard CP/M files. Numeric values
|
||||
are stored as five bytes in the format documented under CALL; if the
|
||||
fifth byte is zero the value is an integer. Strings are stored as the
|
||||
characters of the string (in the correct order!) followed by a carriage
|
||||
return (&0D).
|
||||
|
||||
PUT
|
||||
A statement to output data to a processor port. Full 16-bit addressing
|
||||
is available.
|
||||
|
||||
PUT A%,N% : REM Output N% to port A%
|
||||
|
||||
SOUND
|
||||
This statement is not implemented.
|
||||
|
||||
TIME
|
||||
This pseudo-variable is not implemented in the distribution version, but
|
||||
can be supported by means of the customisation patch. See BBCDIST.MAC.
|
||||
|
||||
USR
|
||||
As with CALL, the processor's registers are initialised as follows:
|
||||
|
||||
A is initialised to the least significant byte of A%
|
||||
B is initialised to the least significant byte of B%
|
||||
C is initialised to the least significant byte of C%
|
||||
D is initialised to the least significant byte of D%
|
||||
E is initialised to the least significant byte of E%
|
||||
F is initialised to the least significant byte of F%
|
||||
H is initialised to the least significant byte of H%
|
||||
L is initialised to the least significant byte of L%
|
||||
|
||||
USR returns a 32-bit integer result composed of the processor's H, L, H'
|
||||
and L' registers, with H being the most significant.
|
||||
|
||||
|
||||
4. RESIDENT Z80 ASSEMBLER
|
||||
|
||||
The in-line assembler is accessed in exactly the same way as the 6502
|
||||
assembler in the BBC Micro version of BBC BASIC. That is, '[' enters
|
||||
assembler mode and ']' exits assembler mode.
|
||||
|
||||
All standard Zilog mnemonics are accepted: ADD, ADC and SBC must be
|
||||
followed by A or HL. For example, ADD A,C is accepted but ADD C is not.
|
||||
However, the brackets around the port number in IN and OUT are optional.
|
||||
Thus both OUT (5),A and OUT 5,A are accepted. The instruction IN F,(C)
|
||||
is not accepted, but the equivalent code is produced from IN (HL),C
|
||||
|
||||
The pseudo-ops DEFB, DEFW and DEFM are included. DEFM works like EQUS in
|
||||
the 6502 version.
|
||||
|
||||
|
||||
5. OPERATING SYSTEM INTERFACE
|
||||
|
||||
The following resident Operating System ("star") commands are
|
||||
implemented. They may be accessed directly (e.g. *BYE) or via the OSCLI
|
||||
statement (OSCLI "BYE").
|
||||
|
||||
Control characters, lower-case characters, DEL and quotation marks may be
|
||||
incorporated in filenames by using the 'escape' character '|'. However,
|
||||
there is no equivalent to the BBC Microcomputer's '|!' to set bit 7.
|
||||
|
||||
*BYE
|
||||
Returns control to the operating system (CP/M).
|
||||
|
||||
*CPM
|
||||
Same as *BYE.
|
||||
|
||||
*. [filespec]
|
||||
*DIR [filespec]
|
||||
List the files which match the (optional) ambiguous filespec. If the
|
||||
filespec is omitted, all .BBC files are listed:
|
||||
*DIR List all .BBC files on the disk
|
||||
*DIR B:*.* List all files on disk B:
|
||||
*.*.* List all files on the current disk
|
||||
|
||||
*DRIVE d:
|
||||
Select drive d as the default drive for subsequent disk operations.
|
||||
|
||||
*ERA filespec
|
||||
Erase (delete) the specified disk file or files. The extension defaults
|
||||
to .BBC if omitted.
|
||||
|
||||
*ESC [ON|OFF]
|
||||
*ESC OFF disables the abort action of the ESCape key; after *ESC OFF the
|
||||
ESCape key simply returns the ASCII code ESC (27). *ESC ON, or *ESC,
|
||||
restores the normal action of the ESCape key.
|
||||
|
||||
*EXEC filespec
|
||||
Accept console input from the specified file instead of from the
|
||||
keyboard. If the extension is omitted, .BBC is assumed.
|
||||
|
||||
*LOAD filespec aaaa
|
||||
Loads the specified file into memory at address aaaa. The load address
|
||||
must be specified. If the extension is omitted, .BBC is assumed.
|
||||
|
||||
*OPT [n]
|
||||
Select the destination for console output characters. The value n is in
|
||||
the range 0 to 2, as follows:
|
||||
|
||||
0 Send characters to the console output
|
||||
1 Send characters to the auxiliary output
|
||||
2 Send characters to the printer (list) output
|
||||
|
||||
*REN newfile=oldfile
|
||||
*RENAME newfile=oldfile
|
||||
Renames 'oldfile' as 'newfile'. If the extension is omitted, .BBC is
|
||||
assumed.
|
||||
|
||||
*RESET
|
||||
Rest the disk system (CP/M function 13). This command does not close any
|
||||
files nor does it perform any other housekeeping function. You should
|
||||
use *RESET after you have changed a disk.
|
||||
|
||||
*SAVE filespec aaaa bbbb
|
||||
*SAVE filespec aaaa +llll
|
||||
This command saves a specified range of memory to disk. The address range
|
||||
is specified either as start (aaaa) and end+1 (bbbb) or as start (aaaa)
|
||||
and length (llll). If the extension is omitted, .BBC is assumed.
|
||||
|
||||
*SPOOL [filespec]
|
||||
Copy all subsequent console output to the specified file. If the filename
|
||||
is omitted, any current spool file is closed and spooling is terminated.
|
||||
If the extension is omitted, .BBC is assumed.
|
||||
|
||||
*TYPE filespec
|
||||
Type the specified file to the screen. If the extension is omitted, .BBC
|
||||
is assumed.
|
||||
|
||||
*| comment
|
||||
This is a comment line. Anything following the | is ignored.
|
||||
|
||||
|
||||
6. ERROR MESSAGES AND CODES
|
||||
|
||||
Untrappable:
|
||||
|
||||
No room RENUMBER space
|
||||
Silly LINE space
|
||||
Sorry Bad program
|
||||
|
||||
Trappable - BASIC:
|
||||
|
||||
1 Out of range 24 Exp range
|
||||
2 25
|
||||
3 26 No such variable
|
||||
4 Mistake 27 Missing )
|
||||
5 Missing , 28 Bad HEX
|
||||
6 Type mismatch 29 No such FN/PROC
|
||||
7 No FN 30 Bad call
|
||||
8 31 Arguments
|
||||
9 Missing " 32 No FOR
|
||||
10 Bad DIM 33 Can't match FOR
|
||||
11 DIM space 34 FOR variable
|
||||
12 Not LOCAL 35
|
||||
13 No PROC 36 No TO
|
||||
14 Array 37
|
||||
15 Subscript 38 No GOSUB
|
||||
16 Syntax error 39 ON syntax
|
||||
17 Escape 40 ON range
|
||||
18 Division by zero 41 No such line
|
||||
19 String too long 42 Out of DATA
|
||||
20 Too big 43 No REPEAT
|
||||
21 -ve root 44
|
||||
22 Log range 45 Missing #
|
||||
23 Accuracy lost
|
||||
|
||||
Trappable - OS:
|
||||
|
||||
190 Directory full 214 File not found
|
||||
192 Too many open files 222 Channel
|
||||
196 File exists 253 Bad string
|
||||
198 Disk full 254 Bad command
|
||||
200 Close error 255 CP/M error
|
||||
204 Bad name
|
||||
|
||||
225
Source/Images/Common/UTILS/BBCDIST.MAC
Normal file
225
Source/Images/Common/UTILS/BBCDIST.MAC
Normal file
@@ -0,0 +1,225 @@
|
||||
TITLE BBCDIST.Z80 (C) R.T.RUSSELL 1982
|
||||
;
|
||||
;BBC BASIC (Z80) - CP/M VERSION 2.30 & 3.00
|
||||
;(C) COPYRIGHT R.T.RUSSELL, 1982.
|
||||
;ALL RIGHTS RESERVED.
|
||||
;
|
||||
;THIS PROGRAM ALLOWS THE USER TO ADAPT BBC BASIC TO THE
|
||||
;PARTICULAR CHARACTERISTICS OF HIS SYSTEM HARDWARE ETC.
|
||||
;
|
||||
;THE PROGRAM RESIDES AT 100H FOR EASE OF LOADING.
|
||||
;*** IT MUST NOT EXCEED 256 BYTES IN TOTAL LENGTH ***
|
||||
;
|
||||
;PLEASE NOTE THAT A Z80 PROCESSOR AND CP/M VERSION 2.2
|
||||
;OR LATER ARE REQUIRED.
|
||||
;
|
||||
;R.T.RUSSELL, 11-03-1984, 03-05-1989
|
||||
;ALTERNATE REGISTERS SAVED FOR BDOS CALL, 04-06-2000
|
||||
;
|
||||
CPM EQU 5
|
||||
COLD EQU 200H
|
||||
;
|
||||
GLOBAL CLRSCN
|
||||
GLOBAL PUTCSR
|
||||
GLOBAL GETCSR
|
||||
GLOBAL PUTIME
|
||||
GLOBAL GETIME
|
||||
GLOBAL GETKEY
|
||||
GLOBAL BYE
|
||||
;
|
||||
ASEG
|
||||
ORG 100H
|
||||
;
|
||||
;JUMP TABLE - BASIC makes calls to hardware-dependent
|
||||
;features via this table:
|
||||
;
|
||||
JP INIT
|
||||
CLRSCN: JP CLS ;CLEAR SCREEN
|
||||
PUTCSR: JP PCSR ;SET CURSOR POSN.
|
||||
GETCSR: JP GCSR ;READ CURSOR POSN.
|
||||
PUTIME: JP PTIME ;SET ELAPSED TIME
|
||||
GETIME: JP GTIME ;READ ELAPSED TIME
|
||||
GETKEY: JP INKEY ;READ KEY (TIME LIMIT)
|
||||
BYE: JP REBOOT ;RETURN TO CP/M
|
||||
;
|
||||
;THE CODE WHICH FOLLOWS IS A SKELETON VERSION SUITABLE
|
||||
;FOR ANY CP/M SYSTEM. IT HAS BEEN CONFIGURED FOR A VT100 TO SOME DEGREE
|
||||
;BY PETER SCHORN.
|
||||
;
|
||||
|
||||
PRSTR EQU 9
|
||||
|
||||
;INIT - Perform hardware initialisation (if any).
|
||||
;
|
||||
INIT: LD A,2
|
||||
INC A
|
||||
LD DE,NOTZ80
|
||||
JP PE,FAIL
|
||||
LD C,12
|
||||
CALL BDOS
|
||||
OR A
|
||||
LD DE,NOTV2
|
||||
JP NZ,COLD
|
||||
FAIL: LD C,PRSTR
|
||||
CALL BDOS
|
||||
RST 0
|
||||
;
|
||||
NOTZ80: DEFB 'Wrong processor$'
|
||||
NOTV2: DEFB 'Wrong CP/M version$'
|
||||
;
|
||||
;REBOOT - Switch off interrupts and return to CP/M
|
||||
;
|
||||
REBOOT: RST 0
|
||||
;
|
||||
;GTIME - Read elapsed-time clock.
|
||||
; Outputs: DEHL = elapsed time (centiseconds)
|
||||
; Destroys: A,D,E,H,L,F
|
||||
;
|
||||
GTIME: LD DE,0
|
||||
LD HL,0
|
||||
RET
|
||||
;
|
||||
;PTIME - Load elapsed-time clock.
|
||||
; Inputs: DEHL = time to load (centiseconds)
|
||||
; Destroys: A,D,E,H,L,F
|
||||
;
|
||||
PTIME: RET
|
||||
;
|
||||
;CLS - Clear screen for VT100.
|
||||
; Destroys: A,D,E,H,L,F
|
||||
;
|
||||
CLS: PUSH BC ; save BC
|
||||
LD C,PRSTR ; command for output string
|
||||
LD DE,CLSSTR ; start address of string
|
||||
CALL BDOS ; output to terminal
|
||||
POP BC ; restore BC
|
||||
RET
|
||||
CLSSTR: DEFB 27,'[2J$' ; VT100 string for clear screen
|
||||
|
||||
;
|
||||
;INKEY - Sample keyboard with specified wait.
|
||||
; This version uses a simple software timing loop.
|
||||
; Modify to use hardware/interrupt timer if available.
|
||||
; Inputs: HL = Time to wait (centiseconds)
|
||||
; Outputs: Carry reset indicates time-out.
|
||||
; If carry set, A = character typed.
|
||||
; Destroys: A,D,E,H,L,F
|
||||
;
|
||||
INKEY: PUSH BC
|
||||
PUSH HL
|
||||
LD C,6
|
||||
LD E,0FFH
|
||||
CALL BDOS ;CONSOLE INPUT
|
||||
POP HL
|
||||
POP BC
|
||||
OR A
|
||||
SCF
|
||||
RET NZ ;KEY PRESSED
|
||||
OR H
|
||||
OR L
|
||||
RET Z ;TIME-OUT
|
||||
PUSH BC
|
||||
LD A,-1
|
||||
LD BC,1250 ;DELAY CONSTANT
|
||||
WAIT: DEC BC
|
||||
CP B
|
||||
JP NZ,WAIT ;WAIT FOR APPROX 10ms
|
||||
POP BC
|
||||
DEC HL
|
||||
JR INKEY
|
||||
;
|
||||
;PCSR - Move cursor to specified position.
|
||||
; Inputs: DE = horizontal position (LHS=0)
|
||||
; HL = vertical position (TOP=0)
|
||||
; called by TAB(column, row)
|
||||
PCSR: LD B,L ; vertical = line (row)
|
||||
CALL CONV ; normalized and convert to decimal
|
||||
LD (LIN),HL ; and store into string
|
||||
LD B,E ; horizontal = column
|
||||
CALL CONV ; normalized and convert to decimal
|
||||
LD (COL),HL ; and store into string
|
||||
LD C,PRSTR ; output string command
|
||||
LD DE,CURS ; start of string
|
||||
JR BDOS ; output string to terminal
|
||||
|
||||
; VT100 sequence for cursor positioning
|
||||
CURS: DEFB 27, '['
|
||||
LIN: DEFW 0 ; high byte, low byte for decimal line
|
||||
DEFB ';'
|
||||
COL: DEFW 0 ; high byte, low byte for decimal column
|
||||
DEFB 'H$'
|
||||
|
||||
; convert binary B (0 <= B < 99, not checked) into B+1 in decimal.
|
||||
; L = upper byte, H = lower byte. ready for LD (...), HL
|
||||
; destroys A, B, L, H
|
||||
; optimized for space over time
|
||||
CONV: INC B ; normalize, home in VT100 is (1,1)
|
||||
LD A,'0' ; A is counter for low byte of result
|
||||
LD L,A ; L is counter for high byte of result
|
||||
CONVLP: INC A ; now B times increment AL in decimal
|
||||
CP '9'+1 ; low byte overflow?
|
||||
JR NZ,CONT ; no, continue incrementing
|
||||
LD A,'0' ; reset low byte
|
||||
INC L ; and increment high byte
|
||||
CONT: DJNZ CONVLP ; B times
|
||||
LD H,A ; put low byte into right place
|
||||
RET
|
||||
|
||||
|
||||
;BDOS - Save the IX and IY and alternate registers
|
||||
; before performing a CP/M function call.
|
||||
;
|
||||
BDOS: PUSH IX
|
||||
PUSH IY
|
||||
EXX
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
EXX
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
CALL CPM
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
EXX
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
EXX
|
||||
POP IY
|
||||
POP IX
|
||||
RET
|
||||
|
||||
|
||||
;GCSR - Return cursor coordinates.
|
||||
; Outputs: DE = X coordinate (POS)
|
||||
; HL = Y coordinate (VPOS)
|
||||
; Destroys: A,D,E,H,L,F
|
||||
;
|
||||
GCSR: LD DE,0
|
||||
LD HL,0
|
||||
RET
|
||||
;
|
||||
IF $ GT 1F4H
|
||||
ERROR 'INSUFFICIENT SPACE'
|
||||
ENDIF
|
||||
;
|
||||
ORG 1F4H
|
||||
;
|
||||
DEFB 80 ;WIDTH
|
||||
DEFB 'E' AND 1FH ;CURSOR UP
|
||||
DEFB 'X' AND 1FH ;CURSOR DOWN
|
||||
DEFB 'A' AND 1FH ;START OF LINE
|
||||
DEFB 'F' AND 1FH ;END OF LINE
|
||||
DEFB 'T' AND 1FH ;DELETE TO END OF LINE
|
||||
DEFB 'H' AND 1FH ;BACKSPACE
|
||||
DEFB 'U' AND 1FH ;CANCEL LINE
|
||||
DEFB 'S' AND 1FH ;CURSOR LEFT
|
||||
DEFB 'D' AND 1FH ;CURSOR RIGHT
|
||||
DEFB 'G' AND 1FH ;DELETE CHARACTER
|
||||
DEFB 'V' AND 1FH ;INSERT CHARACTER
|
||||
;
|
||||
FIN: END
|
||||
|
||||
13
Source/Images/Common/UTILS/BBCDIST.SUB
Normal file
13
Source/Images/Common/UTILS/BBCDIST.SUB
Normal file
@@ -0,0 +1,13 @@
|
||||
; patch BBCBASIC with BBCDIST
|
||||
; need M80 and L80
|
||||
xsub
|
||||
m80 =bbcdist/z
|
||||
l80 bbcdist,bbcdist/n/e
|
||||
ddt bbcbasic.org
|
||||
ibbcdist.com
|
||||
r
|
||||
g0
|
||||
save 58 bbcbasic.com
|
||||
era bbcdist.rel
|
||||
era bbcdist.com
|
||||
|
||||
BIN
Source/Images/Common/UTILS/GENHEX.COM
Normal file
BIN
Source/Images/Common/UTILS/GENHEX.COM
Normal file
Binary file not shown.
BIN
Source/Images/Common/UTILS/LS.COM
Normal file
BIN
Source/Images/Common/UTILS/LS.COM
Normal file
Binary file not shown.
BIN
Source/Images/Common/UTILS/LSWEEP.COM
Normal file
BIN
Source/Images/Common/UTILS/LSWEEP.COM
Normal file
Binary file not shown.
@@ -4,20 +4,29 @@
|
||||
SYSTEMS = ../CPM22/cpm_wbw.sys ../ZSDOS/zsys_wbw.sys ../CPM3/cpmldr.sys ../ZPM3/zpmldr.sys
|
||||
|
||||
FDIMGS = fd144_cpm22.img fd144_zsdos.img fd144_nzcom.img \
|
||||
fd144_cpm3.img fd144_zpm3.img fd144_ws4.img fd144_qpm.img
|
||||
fd144_cpm3.img fd144_zpm3.img fd144_ws4.img fd144_qpm.img \
|
||||
fd144_z80asm.img fd144_aztecc.img fd144_hitechc.img \
|
||||
fd144_bascomp.img fd144_fortran.img fd144_games.img \
|
||||
fd144_tpascal.img
|
||||
HD512IMGS = hd512_cpm22.img hd512_zsdos.img hd512_nzcom.img \
|
||||
hd512_cpm3.img hd512_zpm3.img hd512_ws4.img
|
||||
HD512XIMGS = hd512_z80asm.img hd512_aztecc.img hd512_hitechc.img \
|
||||
hd512_bascomp.img hd512_fortran.img hd512_games.img \
|
||||
hd512_tpascal.img hd512_dos65.img hd512_qpm.img
|
||||
# HDIMGS += hd512_bp.img
|
||||
HD1KIMGS = hd1k_cpm22.img hd1k_zsdos.img hd1k_nzcom.img \
|
||||
hd1k_cpm3.img hd1k_zpm3.img hd1k_ws4.img
|
||||
HD1KXIMGS = hd1k_z80asm.img hd1k_aztecc.img hd1k_hitechc.img \
|
||||
hd1k_bascomp.img hd1k_fortran.img hd1k_games.img \
|
||||
hd1k_tpascal.img hd1k_qpm.img
|
||||
# HD1KIMGS += hd1k_bp.img
|
||||
|
||||
HD512PREFIX =
|
||||
HD1KPREFIX = hd1k_prefix.dat
|
||||
|
||||
OBJECTS = $(FDIMGS)
|
||||
OBJECTS += $(HD512IMGS) hd512_combo.img hd512_dos65.img hd512_qpm.img$(HD512PREFIX)
|
||||
OBJECTS += $(HD1KIMGS) hd1k_combo.img hd1k_qpm.img $(HD1KPREFIX)
|
||||
OBJECTS += $(HD512IMGS) $(HD512XIMGS) hd512_combo.img $(HD512PREFIX)
|
||||
OBJECTS += $(HD1KIMGS) $(HD1KXIMGS) hd1k_combo.img $(HD1KPREFIX)
|
||||
|
||||
OTHERS = blank144 blankhd512 blankhd1k
|
||||
|
||||
@@ -61,7 +70,7 @@ blankhd512:
|
||||
@echo Making Blank HD512 of size $(HD512SIZE)k
|
||||
@LC_ALL=en_US.US-ASCII tr '\000' '\345' </dev/zero | dd of=$@ bs=1024 count=$(HD512SIZE)
|
||||
@hexdump $@
|
||||
|
||||
|
||||
blankhd1k:
|
||||
@echo Making Blank HD1K of size $(HD1KSIZE)k
|
||||
@LC_ALL=en_US.US-ASCII tr '\000' '\345' </dev/zero | dd of=$@ bs=1024 count=$(HD1KSIZE)
|
||||
@@ -122,7 +131,7 @@ clean::
|
||||
@rm -f *.ls
|
||||
|
||||
imgdiff:
|
||||
@for i in $(FDIMGS) $(HD512IMGS) $(HD1KIMGS) ; do \
|
||||
@for i in $(FDIMGS) $(HD512IMGS) $(HD512XIMGS) $(HD1KIMGS) $(HD1KXIMGS) ; do \
|
||||
echo $$i ; \
|
||||
if echo $$i | grep -q ^fd144_ ; then \
|
||||
fmt=wbw_fd144 ; \
|
||||
|
||||
26
Source/Images/d_aztecc/Readme.txt
Normal file
26
Source/Images/d_aztecc/Readme.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
===== Aztec C II compiler v1.06D =====
|
||||
|
||||
Aztec C is a discontinued programming language for a variety of platforms
|
||||
including MS-DOS, Apple II DOS 3.3 and PRoDOS, Commodore 64, Macintosh and
|
||||
Amiga. This disk contains the CP/M version of that compiler. A cross-compiler
|
||||
for MS-DOS or Windows XP is also available.
|
||||
|
||||
For full documentation, see https://www.aztecmuseum.ca/
|
||||
|
||||
The user manual is available in the Doc directory
|
||||
Aztec_C_1.06_User_Manual_Mar84.pdf
|
||||
|
||||
== License ==
|
||||
|
||||
I herewith grant you a non-exclusive conditional licence to use any and
|
||||
all of my work included with this compiler for whatever use you deem fit,
|
||||
provided you do not take credit for my work, and that you leave my
|
||||
copyright notices intact in all of it.
|
||||
|
||||
I believe everything I have written to be correct. Regardless, I, Bill
|
||||
Buckels, do not guarantee, or warranty, in whole or in part, any of this,
|
||||
and further do not offer support for any of this. All of this is provided
|
||||
as-is.
|
||||
|
||||
Bill Buckels
|
||||
bbuckels@mts.net
|
||||
BIN
Source/Images/d_aztecc/u0/ARCV.COM
Normal file
BIN
Source/Images/d_aztecc/u0/ARCV.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/AS.COM
Normal file
BIN
Source/Images/d_aztecc/u0/AS.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/C.LIB
Normal file
BIN
Source/Images/d_aztecc/u0/C.LIB
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/CC.COM
Normal file
BIN
Source/Images/d_aztecc/u0/CC.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/CC.MSG
Normal file
BIN
Source/Images/d_aztecc/u0/CC.MSG
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/CNM.COM
Normal file
BIN
Source/Images/d_aztecc/u0/CNM.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/CRC.COM
Normal file
BIN
Source/Images/d_aztecc/u0/CRC.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_aztecc/u0/CZ.COM
Normal file
BIN
Source/Images/d_aztecc/u0/CZ.COM
Normal file
Binary file not shown.
9
Source/Images/d_aztecc/u0/EXMPL.C
Normal file
9
Source/Images/d_aztecc/u0/EXMPL.C
Normal file
@@ -0,0 +1,9 @@
|
||||
main()
|
||||
{
|
||||
char buf[80];
|
||||
printf("please enter your name: ");
|
||||
gets(buf);
|
||||
printf("hello, %s, welcome to the growing community of Aztec C users\n", buf);
|
||||
}
|
||||
|
||||
|
||||
267
Source/Images/d_aztecc/u0/HEADER.ARC
Normal file
267
Source/Images/d_aztecc/u0/HEADER.ARC
Normal file
@@ -0,0 +1,267 @@
|
||||
libc.h
|
||||
/* Copyright (C) 1981, 1982 by Manx Software Systems */
|
||||
|
||||
extern int errno;
|
||||
#define FLT_FAULT 0 /* vector for floating-point faults */
|
||||
extern int (*Sysvec[])();
|
||||
|
||||
#define NULL 0
|
||||
#define EOF -1
|
||||
#define BUFSIZ 1024
|
||||
|
||||
#define _BUSY 0x01
|
||||
#define _ALLBUF 0x02
|
||||
#define _DIRTY 0x04
|
||||
#define _EOF 0x08
|
||||
#define _IOERR 0x10
|
||||
|
||||
typedef struct {
|
||||
char *_bp; /* current position in buffer */
|
||||
char *_bend; /* last character in buffer + 1 */
|
||||
char *_buff; /* address of buffer */
|
||||
char _flags; /* open mode, etc. */
|
||||
char _unit; /* token returned by open */
|
||||
char _bytbuf; /* single byte buffer for unbuffer streams */
|
||||
int _buflen; /* length of buffer */
|
||||
} FILE;
|
||||
|
||||
extern FILE Cbuffs[];
|
||||
extern char *Stdbufs; /* free list of buffers */
|
||||
long ftell();
|
||||
|
||||
#define stdin (&Cbuffs[0])
|
||||
#define stdout (&Cbuffs[1])
|
||||
#define stderr (&Cbuffs[2])
|
||||
#define getchar() agetc(stdin)
|
||||
#define putchar(c) aputc(c, stdout)
|
||||
#define feof(fp) (((fp)->_flags&_EOF)!=0)
|
||||
#define ferror(fp) (((fp)->_flags&_IOERR)!=0)
|
||||
#define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF))
|
||||
#define fileno(fp) ((fp)->_unit)
|
||||
errno.h
|
||||
extern int errno;
|
||||
#define ENOENT -1
|
||||
#define E2BIG -2
|
||||
#define EBADF -3
|
||||
#define ENOMEM -4
|
||||
#define EEXIST -5
|
||||
#define EINVAL -6
|
||||
#define ENFILE -7
|
||||
#define EMFILE -8
|
||||
#define ENOTTY -9
|
||||
#define EACCES -10
|
||||
|
||||
#define ERANGE -20
|
||||
#define EDOM -21
|
||||
fcntl.h
|
||||
#define O_RDONLY 0
|
||||
#define O_WRONLY 1
|
||||
#define O_RDWR 2
|
||||
#define O_CREAT 0x0100
|
||||
#define O_TRUNC 0x0200
|
||||
#define O_EXCL 0x0400
|
||||
#define O_APPEND 0x0800
|
||||
io.h
|
||||
/* Copyright (C) 1982 by Manx Software Systems */
|
||||
/*
|
||||
* if MAXCHAN is changed then the initialization of chantab in croot.c
|
||||
* should be adjusted so that it initializes EXACTLY MAXCHAN elements of
|
||||
* the array. If this is not done, the I/O library may exhibit
|
||||
* strange behavior.
|
||||
*/
|
||||
#define MAXCHAN 11 /* maximum number of I/O channels */
|
||||
|
||||
/*
|
||||
* argument to device routines.
|
||||
* this is a typedef to allow future redeclaration to guarantee
|
||||
* enough space to store either a pointer or an integer.
|
||||
*/
|
||||
typedef char *_arg;
|
||||
|
||||
/*
|
||||
* device control structure
|
||||
*/
|
||||
struct device {
|
||||
char d_read;
|
||||
char d_write;
|
||||
char d_ioctl; /* used by character special devices (eg CON:) */
|
||||
char d_seek; /* used by random I/O devices (eg: a file) */
|
||||
int (*d_open)(); /* for special open handling */
|
||||
};
|
||||
|
||||
/*
|
||||
* device table, contains names and pointers to device entries
|
||||
*/
|
||||
struct devtabl {
|
||||
char *d_name;
|
||||
struct device *d_dev;
|
||||
_arg d_arg;
|
||||
};
|
||||
|
||||
/*
|
||||
* channel table: relates fd's to devices
|
||||
*/
|
||||
struct channel {
|
||||
char c_read;
|
||||
char c_write;
|
||||
char c_ioctl;
|
||||
char c_seek;
|
||||
int (*c_close)();
|
||||
_arg c_arg;
|
||||
} ;
|
||||
extern struct channel chantab[MAXCHAN];
|
||||
|
||||
struct fcb {
|
||||
char f_driv;
|
||||
char f_name[8];
|
||||
char f_type[3];
|
||||
char f_ext;
|
||||
char f_resv[2];
|
||||
char f_rc;
|
||||
char f_sydx[16];
|
||||
char f_cr;
|
||||
unsigned f_record; char f_overfl;
|
||||
};
|
||||
|
||||
struct fcbtab {
|
||||
struct fcb fcb;
|
||||
char offset;
|
||||
char flags;
|
||||
char user;
|
||||
};
|
||||
|
||||
#define OPNFIL 15
|
||||
#define CLSFIL 16
|
||||
#define DELFIL 19
|
||||
#define READSQ 20
|
||||
#define WRITSQ 21
|
||||
#define MAKFIL 22
|
||||
#define SETDMA 26
|
||||
#define GETUSR 32
|
||||
#define READRN 33
|
||||
#define WRITRN 34
|
||||
#define FILSIZ 35
|
||||
#define SETREC 36
|
||||
|
||||
#define Wrkbuf ((char *)0x80)
|
||||
math.h
|
||||
double sin(), cos(), tan(), cotan();
|
||||
double asin(), acos(), atan(), atan2();
|
||||
double ldexp(), frexp(), modf();
|
||||
double floor(), ceil();
|
||||
double log(), log10(), exp(), sqrt(), pow();
|
||||
double sinh(), cosh(), tanh(), fabs();
|
||||
|
||||
#define HUGE 5.2e+151
|
||||
#define LOGHUGE 349.3
|
||||
#define TINY 7.5e-155
|
||||
#define LOGTINY -354.8
|
||||
setjmp.h
|
||||
/* Copyright (C) 1983 by Manx Software Systems */
|
||||
#define JBUFSIZE (5*sizeof(int))
|
||||
|
||||
typedef char jmp_buf[JBUFSIZE];
|
||||
sgtty.h
|
||||
/* Copyright (C) 1983 by Manx Software Systems */
|
||||
|
||||
#define TIOCGETP 0 /* read contents of tty control structure */
|
||||
#define TIOCSETP 1 /* set contents of tty control structure */
|
||||
#define TIOCSETN 1 /* ditto only don't wait for output to flush */
|
||||
|
||||
struct sgttyb {
|
||||
char sg_erase; /* ignored */
|
||||
char sg_kill; /* ignored */
|
||||
short sg_flags; /* control flags */
|
||||
};
|
||||
|
||||
/* settings for flags */
|
||||
#define _VALID 0x3a
|
||||
#define RAW 0x20 /* no echo or mapping of input/output BDOS(6) */
|
||||
#define CRMOD 0x10 /* map input CR to NL, output NL to CR LF */
|
||||
#define ECHO 0x08 /* ignored unless CBREAK is set */
|
||||
#define CBREAK 0x02 /* input using BDOS(1), unless echo off then */
|
||||
/* same as RAW */
|
||||
stdio.h
|
||||
/* Copyright (C) 1982, 1984 by Manx Software Systems */
|
||||
#define fgetc getc
|
||||
#define fputc putc
|
||||
#define NULL 0
|
||||
#define EOF -1
|
||||
|
||||
#ifdef TINY
|
||||
struct fcb {
|
||||
char f_driv;
|
||||
char f_name[8];
|
||||
char f_type[3];
|
||||
char f_ext;
|
||||
char f_resv[2];
|
||||
char f_rc;
|
||||
char f_sydx[16];
|
||||
char f_cr;
|
||||
unsigned f_record; char f_overfl;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
char *_bp;
|
||||
struct fcb _fcb;
|
||||
char user;
|
||||
} FILE;
|
||||
|
||||
#else
|
||||
|
||||
#define BUFSIZ 1024
|
||||
#define MAXSTREAM 11
|
||||
|
||||
#define _BUSY 0x01
|
||||
#define _ALLBUF 0x02
|
||||
#define _DIRTY 0x04
|
||||
#define _EOF 0x08
|
||||
#define _IOERR 0x10
|
||||
|
||||
typedef struct {
|
||||
char *_bp; /* current position in buffer */
|
||||
char *_bend; /* last character in buffer + 1 */
|
||||
char *_buff; /* address of buffer */
|
||||
char _flags; /* open mode, etc. */
|
||||
char _unit; /* token returned by open */
|
||||
char _bytbuf; /* single byte buffer for unbuffer streams */
|
||||
int _buflen; /* length of buffer */
|
||||
} FILE;
|
||||
|
||||
extern FILE Cbuffs[];
|
||||
FILE *fopen();
|
||||
long ftell();
|
||||
|
||||
#define stdin (&Cbuffs[0])
|
||||
#define stdout (&Cbuffs[1])
|
||||
#define stderr (&Cbuffs[2])
|
||||
#define getchar() agetc(stdin)
|
||||
#define putchar(c) aputc(c, stdout)
|
||||
#define feof(fp) (((fp)->_flags&_EOF)!=0)
|
||||
#define ferror(fp) (((fp)->_flags&_IOERR)!=0)
|
||||
#define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF))
|
||||
#define fileno(fp) ((fp)->_unit)
|
||||
#define fflush(fp) flsh_(fp,-1)
|
||||
#endif
|
||||
ctype.h
|
||||
/* Copyright (C) 1984 by Manx Software Systems */
|
||||
|
||||
extern char ctp_[];
|
||||
|
||||
#define isalpha(x) (ctp_[(x)+1]&0x03)
|
||||
#define isupper(x) (ctp_[(x)+1]&0x01)
|
||||
#define islower(x) (ctp_[(x)+1]&0x02)
|
||||
#define isdigit(x) (ctp_[(x)+1]&0x04)
|
||||
#define isxdigit(x) (ctp_[(x)+1]&0x08)
|
||||
#define isalnum(x) (ctp_[(x)+1]&0x07)
|
||||
#define isspace(x) (ctp_[(x)+1]&0x10)
|
||||
#define ispunct(x) (ctp_[(x)+1]&0x40)
|
||||
#define iscntrl(x) (ctp_[(x)+1]&0x20)
|
||||
#define isprint(x) (ctp_[(x)+1]&0xc7)
|
||||
#define isgraph(x) (ctp_[(x)+1]&0x47)
|
||||
#define isascii(x) (((x)&0x80)==0)
|
||||
|
||||
#define toascii(x) ((x)&127)
|
||||
#define _tolower(x) ((x)|0x20)
|
||||
#define _toupper(x) ((x)&0x5f)
|
||||
|
||||
BIN
Source/Images/d_aztecc/u0/HEX80.COM
Normal file
BIN
Source/Images/d_aztecc/u0/HEX80.COM
Normal file
Binary file not shown.
2583
Source/Images/d_aztecc/u0/LIBASRC.ARC
Normal file
2583
Source/Images/d_aztecc/u0/LIBASRC.ARC
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user