mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Reintegrate wbw -> trunk
This commit is contained in:
@@ -11,12 +11,14 @@ set ZXBINDIR=%TOOLS%/cpm/bin/
|
||||
set ZXLIBDIR=%TOOLS%/cpm/lib/
|
||||
set ZXINCDIR=%TOOLS%/cpm/include/
|
||||
|
||||
call :asm cbios || goto :eof
|
||||
|
||||
goto :eof
|
||||
|
||||
:asm
|
||||
echo.
|
||||
echo Building %1...
|
||||
tasm -t80 -b -g3 -fFF %1.asm %1.bin %1.lst
|
||||
goto :eof
|
||||
echo Building CBIOS for RomWBW...
|
||||
echo.
|
||||
tasm -t80 -b -g3 -fFF -dPLTWBW cbios.asm cbios_wbw.bin cbios_wbw.lst
|
||||
if errorlevel 1 goto :eof
|
||||
|
||||
echo.
|
||||
echo Building CBIOS for UNA...
|
||||
echo.
|
||||
tasm -t80 -b -g3 -fFF -dPLTUNA cbios.asm cbios_una.bin cbios_una.lst
|
||||
if errorlevel 1 goto :eof
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
; RomWBW Configured for N8VEM simh, 2015-02-14T09:50:52
|
||||
;
|
||||
#DEFINE TIMESTAMP "14-Feb-2015"
|
||||
;
|
||||
PLATFORM .EQU PLT_N8VEM ; HARDWARE PLATFORM
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB
|
||||
;
|
||||
; INCLUDE PLATFORM SPECIFIC DEVICE DEFINITIONS
|
||||
;
|
||||
#INCLUDE "std-n8vem.inc"
|
||||
;
|
||||
#INCLUDE "config.asm"
|
||||
;
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,20 +1,18 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW 2.X CONFIGURATION FOR SIMH EMULATOR
|
||||
;==================================================================================================
|
||||
; CBIOS BUILD CONFIGURATION OPTIONS
|
||||
;
|
||||
; BUILD CONFIGURATION OPTIONS
|
||||
;
|
||||
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
CLRRAMDISK .EQU CLR_ALWAYS ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)
|
||||
;
|
||||
;DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
DEFIOBYTE .EQU $00 ; DEFAULT INITIAL VALUE FOR CP/M IOBYTE, $00=TTY, $01=CRT (MUST HAVE CRT HARDWARE)
|
||||
ALTIOBYTE .EQU DEFIOBYTE ; ALT INITIAL VALUE (USED WHEN CONFIG JUMPER SHORTED)
|
||||
CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)
|
||||
WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM
|
||||
DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS
|
||||
;
|
||||
#DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M
|
||||
;
|
||||
CPM_LOC .EQU $D000 ; LOCATION OF START OF CCP
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
CPM_END .EQU $FE00 ; ROMWBW HBIOS PROXY OCCUPIES TOP 2 PAGES OF MEMORY
|
||||
#ENDIF
|
||||
;
|
||||
#IFDEF PLTUNA
|
||||
CPM_END .EQU $FF00 ; UNA UBIOS PROXY OCCUPIES TOP 1 PAGE OF MEMORY
|
||||
#ENDIF
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
;
|
||||
; N8VEM HARDWARE IO PORT ADDRESSES AND MEMORY LOCATIONS
|
||||
;
|
||||
RTC .EQU $70 ; ADDRESS OF RTC LATCH AND INPUT PORT
|
||||
;
|
||||
; MEMORY BANK CONFIGURATION
|
||||
;
|
||||
BID_ROM0 .EQU $00
|
||||
BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1))
|
||||
BID_RAM0 .EQU $80
|
||||
BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1))
|
||||
|
||||
BID_BOOT .EQU BID_ROM0 ; BOOT BANK
|
||||
BID_BIOSIMG .EQU BID_ROM0 + 1 ; BIOS IMAGE BANK
|
||||
BID_OSIMG .EQU BID_ROM0 + 2 ; ROM LOADER AND IMAGES BANK
|
||||
BID_FSFAT .EQU BID_ROM0 + 3 ; FAT FILESYSTEM DRIVER BANK
|
||||
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK
|
||||
BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK
|
||||
|
||||
BID_RAMD0 .EQU BID_RAM0 ; FIRST RAM DRIVE BANK
|
||||
BID_RAMDN .EQU BID_RAMN - 4 ; LAST RAM DRIVE BANK
|
||||
BID_AUX .EQU BID_RAMN - 3 ; AUX BANK (BPBIOS, ETC.)
|
||||
BID_BIOS .EQU BID_RAMN - 2 ; BIOS BANK
|
||||
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.)
|
||||
BID_COM .EQU BID_RAMN ; COMMON BANK, UPPER 32K
|
||||
@@ -1,36 +0,0 @@
|
||||
;
|
||||
; CHARACTER DEVICES
|
||||
;
|
||||
CIODEV_UART .EQU $00
|
||||
CIODEV_ASCI .EQU $10
|
||||
CIODEV_VDU .EQU $20
|
||||
CIODEV_CVDU .EQU $30
|
||||
CIODEV_UPD7220 .EQU $40
|
||||
CIODEV_N8V .EQU $50
|
||||
CIODEV_PRPCON .EQU $60
|
||||
CIODEV_PPPCON .EQU $70
|
||||
CIODEV_CONSOLE .EQU $C0
|
||||
CIODEV_CRT .EQU $D0
|
||||
CIODEV_BAT .EQU $E0
|
||||
CIODEV_NUL .EQU $F0
|
||||
;
|
||||
; DISK DEVICES (ONLY FIRST NIBBLE RELEVANT, SECOND NIBBLE RESERVED FOR UNIT)
|
||||
;
|
||||
DIODEV_MD .EQU $00
|
||||
DIODEV_FD .EQU $10
|
||||
DIODEV_RF .EQU $20
|
||||
DIODEV_IDE .EQU $30
|
||||
DIODEV_ATAPI .EQU $40
|
||||
DIODEV_PPIDE .EQU $50
|
||||
DIODEV_SD .EQU $60
|
||||
DIODEV_PRPSD .EQU $70
|
||||
DIODEV_PPPSD .EQU $80
|
||||
DIODEV_HDSK .EQU $90
|
||||
;
|
||||
; VDA DEVICES (VIDEO DISPLAY ADAPTER)
|
||||
;
|
||||
VDADEV_NONE .EQU $00 ; NO VDA DEVICE
|
||||
VDADEV_VDU .EQU $10 ; ECB VDU - 6545 CHIP
|
||||
VDADEV_CVDU .EQU $20 ; ECB COLOR VDU - 8563 CHIP (NOT IMP)
|
||||
VDADEV_UPD7220 .EQU $30 ; ECB uP7220 (NOT IMPLEMENTED)
|
||||
VDADEV_N8V .EQU $40 ; N8 ONBOARD VDA SUBSYSTEM
|
||||
@@ -1,308 +0,0 @@
|
||||
; ~/RomWBW/branches/s100/Source/std.asm 1/19/2013 dwg -
|
||||
;
|
||||
|
||||
; The purpose of this file is to define generic symbols and to include
|
||||
; the appropriate std-*.inc file to bring in platform specifics.
|
||||
|
||||
; There are four classes of systems supported by N8VEM.
|
||||
; 1. N8VEM Platforms that include ECB interface
|
||||
; 2. ZETA Genrally N8VEM-like, but no ECB
|
||||
; 3. N8 Generally N8VEM-like bt 180 and extra embedded devices
|
||||
; 4. S100 Assumes Z80 Master CPU Card
|
||||
|
||||
; All the classes require certain generic definitions, and these are
|
||||
; defined here prior to the inclusion of platform specific .inc files.
|
||||
|
||||
; It is unfortunate, but all the possible config items must be defined
|
||||
; here because the config gets read before the specific std-*.inc's
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
TRUE .EQU 1
|
||||
FALSE .EQU 0
|
||||
;
|
||||
; PRIMARY HARDWARE PLATFORMS
|
||||
;
|
||||
PLT_N8VEM .EQU 1 ; N8VEM ECB Z80 SBC
|
||||
PLT_ZETA .EQU 2 ; ZETA Z80 SBC
|
||||
PLT_N8 .EQU 3 ; N8 (HOME COMPUTER) Z180 SBC
|
||||
PLT_MK4 .EQU 4
|
||||
PLT_S2I .EQU 5 ; SCSI2IDE
|
||||
PLT_S100 .EQU 6 ; S100COMPUTERS Z80 based system
|
||||
PLT_UNA .EQU 7 ; UNA BIOS
|
||||
;
|
||||
; RAM DISK INITIALIZATION OPTIONS
|
||||
;
|
||||
CLR_NEVER .EQU 0 ; NEVER CLEAR RAM DISK
|
||||
CLR_AUTO .EQU 1 ; CLEAR RAM DISK IF INVALID DIR ENTRIES
|
||||
CLR_ALWAYS .EQU 2 ; ALWAYS CLEAR RAM DISK
|
||||
;
|
||||
; FLOPPY DISK MEDIA SELECTIONS (ID'S MUST BE INDEX OF ENTRY IN FCD_TBL)
|
||||
;
|
||||
FDM720 .EQU 0 ; 3.5" FLOPPY, 720KB, 2 SIDES, 80 TRKS, 9 SECTORS
|
||||
FDM144 .EQU 1 ; 3.5" FLOPPY, 1.44MB, 2 SIDES, 80 TRKS, 18 SECTORS
|
||||
FDM360 .EQU 2 ; 5.25" FLOPPY, 360KB, 2 SIDES, 40 TRKS, 9 SECTORS
|
||||
FDM120 .EQU 3 ; 5.25" FLOPPY, 1.2MB, 2 SIDES, 80 TRKS, 15 SECTORS
|
||||
FDM111 .EQU 4 ; 8" FLOPPY, 1.11MB, 2 SIDES, 74 TRKS, 15 SECTORS
|
||||
;
|
||||
; MEDIA ID VALUES
|
||||
;
|
||||
MID_NONE .EQU 0
|
||||
MID_MDROM .EQU 1
|
||||
MID_MDRAM .EQU 2
|
||||
MID_RF .EQU 3
|
||||
MID_HD .EQU 4
|
||||
MID_FD720 .EQU 5
|
||||
MID_FD144 .EQU 6
|
||||
MID_FD360 .EQU 7
|
||||
MID_FD120 .EQU 8
|
||||
MID_FD111 .EQU 9
|
||||
;
|
||||
; CONSOLE TERMINAL TYPE CHOICES
|
||||
;
|
||||
TERM_TTY .EQU 0
|
||||
TERM_ANSI .EQU 1
|
||||
TERM_WYSE .EQU 2
|
||||
TERM_VT52 .EQU 3
|
||||
;
|
||||
; EMULATION TYPES
|
||||
;
|
||||
EMUTYP_NONE .EQU 0
|
||||
EMUTYP_TTY .EQU 1
|
||||
EMUTYP_ANSI .EQU 2
|
||||
;
|
||||
; SYSTEM GENERATION SETTINGS
|
||||
;
|
||||
SYS_CPM .EQU 1 ; CPM (IMPLIES BDOS + CCP)
|
||||
SYS_ZSYS .EQU 2 ; ZSYSTEM OS (IMPLIES ZSDOS + ZCPR)
|
||||
;
|
||||
DOS_BDOS .EQU 1 ; BDOS
|
||||
DOS_ZDDOS .EQU 2 ; ZDDOS VARIANT OF ZSDOS
|
||||
DOS_ZSDOS .EQU 3 ; ZSDOS
|
||||
;
|
||||
CP_CCP .EQU 1 ; CCP COMMAND PROCESSOR
|
||||
CP_ZCPR .EQU 2 ; ZCPR COMMAND PROCESSOR
|
||||
;
|
||||
; CONFIGURE DOS (DOS) AND COMMAND PROCESSOR (CP) BASED ON SYSTEM SETTING (SYS)
|
||||
;
|
||||
#IFNDEF BLD_SYS
|
||||
SYS .EQU SYS_CPM
|
||||
#ELSE
|
||||
SYS .EQU BLD_SYS
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SYS == SYS_CPM)
|
||||
DOS .EQU DOS_BDOS
|
||||
CP .EQU CP_CCP
|
||||
#DEFINE OSLBL "CP/M-80 2.2"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SYS == SYS_ZSYS)
|
||||
DOS .EQU DOS_ZSDOS
|
||||
CP .EQU CP_ZCPR
|
||||
#DEFINE OSLBL "ZSDOS 1.1"
|
||||
#ENDIF
|
||||
;
|
||||
; INCLUDE VERSION AND BUILD SETTINGS
|
||||
;
|
||||
#INCLUDE "ver.inc" ; ADD BIOSVER
|
||||
;
|
||||
#INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE
|
||||
;
|
||||
; INCLUDE PLATFORM SPECIFIC HARDWARE DEFINITIONS
|
||||
;
|
||||
#IF ((PLATFORM == PLT_N8VEM) | (PLATFORM == PLT_ZETA))
|
||||
#INCLUDE "n8vem.inc"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_S2I)
|
||||
#INCLUDE "s2i.inc"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_N8)
|
||||
#INCLUDE "n8.inc"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_MK4)
|
||||
#INCLUDE "mk4.inc"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_UNA)
|
||||
#INCLUDE "una.inc"
|
||||
#ENDIF
|
||||
;
|
||||
; CHARACTER DEVICE FUNCTIONS
|
||||
;
|
||||
CF_INIT .EQU 0
|
||||
CF_IN .EQU 1
|
||||
CF_IST .EQU 2
|
||||
CF_OUT .EQU 3
|
||||
CF_OST .EQU 4
|
||||
;
|
||||
; DISK OPERATIONS
|
||||
;
|
||||
DOP_READ .EQU 0 ; READ OPERATION
|
||||
DOP_WRITE .EQU 1 ; WRITE OPERATION
|
||||
DOP_FORMAT .EQU 2 ; FORMAT OPERATION
|
||||
DOP_READID .EQU 3 ; READ ID OPERATION
|
||||
;
|
||||
; BIOS FUNCTIONS
|
||||
;
|
||||
#IF (PLATFORM == PLT_UNA)
|
||||
BF_CIO .EQU $10
|
||||
BF_CIOIN .EQU BF_CIO + 1 ; CHARACTER INPUT
|
||||
BF_CIOOUT .EQU BF_CIO + 2 ; CHARACTER OUTPUT
|
||||
BF_CIOIST .EQU BF_CIO + 3 ; CHARACTER INPUT STATUS
|
||||
BF_CIOOST .EQU BF_CIO + 4 ; CHARACTER OUTPUT STATUS
|
||||
;
|
||||
BF_DIO .EQU $40
|
||||
BF_DIORD .EQU BF_DIO + 2 ; DISK READ
|
||||
BF_DIOWR .EQU BF_DIO + 3 ; DISK WRITE
|
||||
#ELSE
|
||||
BF_CIO .EQU $00
|
||||
BF_CIOIN .EQU BF_CIO + 0 ; CHARACTER INPUT
|
||||
BF_CIOOUT .EQU BF_CIO + 1 ; CHARACTER OUTPUT
|
||||
BF_CIOIST .EQU BF_CIO + 2 ; CHARACTER INPUT STATUS
|
||||
BF_CIOOST .EQU BF_CIO + 3 ; CHARACTER OUTPUT STATUS
|
||||
BF_CIOCFG .EQU BF_CIO + 4 ; CHARACTER I/O CONFIG
|
||||
;
|
||||
BF_DIO .EQU $10
|
||||
BF_DIORD .EQU BF_DIO + 0 ; DISK READ
|
||||
BF_DIOWR .EQU BF_DIO + 1 ; DISK WRITE
|
||||
BF_DIOST .EQU BF_DIO + 2 ; DISK STATUS
|
||||
BF_DIOMED .EQU BF_DIO + 3 ; DISK MEDIA
|
||||
BF_DIOID .EQU BF_DIO + 4 ; DISK IDENTIFY
|
||||
BF_DIOGETBUF .EQU BF_DIO + 8 ; DISK GET BUFFER ADR
|
||||
BF_DIOSETBUF .EQU BF_DIO + 9 ; DISK SET BUFFER ADR
|
||||
BF_DIODEVCNT .EQU BF_DIO + 10 ; DISK DEVICE COUNT
|
||||
BF_DIODEVINF .EQU BF_DIO + 11 ; DISK DEVICE INFO
|
||||
;
|
||||
BF_RTC .EQU $20
|
||||
BF_RTCGETTIM .EQU BF_RTC + 0 ; GET TIME
|
||||
BF_RTCSETTIM .EQU BF_RTC + 1 ; SET TIME
|
||||
BF_RTCGETBYT .EQU BF_RTC + 2 ; GET NVRAM BYTE BY INDEX
|
||||
BF_RTCSETBYT .EQU BF_RTC + 3 ; SET NVRAM BYTE BY INDEX
|
||||
BF_RTCGETBLK .EQU BF_RTC + 4 ; GET NVRAM DATA BLOCK
|
||||
BF_RTCSETBLK .EQU BF_RTC + 5 ; SET NVRAM DATA BLOCK
|
||||
;
|
||||
BF_EMU .EQU $30
|
||||
BF_EMUIN .EQU BF_EMU + 0 ; EMULATOR CHARACTER INPUT
|
||||
BF_EMUOUT .EQU BF_EMU + 1 ; EMULATOR CHARACTER OUTPUT
|
||||
BF_EMUIST .EQU BF_EMU + 2 ; EMULATOR CHARACTER INPUT STATUS
|
||||
BF_EMUOST .EQU BF_EMU + 3 ; EMULATOR CHARACTER OUTPUT STATUS
|
||||
BF_EMUCFG .EQU BF_EMU + 4 ; EMULATOR CHARACTER I/O CONFIG
|
||||
BF_EMUINI .EQU BF_EMU + 8 ; INITIALIZE EMULATION
|
||||
BF_EMUQRY .EQU BF_EMU + 9 ; QUERY EMULATION STATUS
|
||||
;
|
||||
BF_VDA .EQU $40
|
||||
BF_VDAINI .EQU BF_VDA + 0 ; INITIALIZE VDU
|
||||
BF_VDAQRY .EQU BF_VDA + 1 ; QUERY VDU STATUS
|
||||
BF_VDARES .EQU BF_VDA + 2 ; SOFT RESET VDU
|
||||
BF_VDASCS .EQU BF_VDA + 3 ; SET CURSOR STYLE
|
||||
BF_VDASCP .EQU BF_VDA + 4 ; SET CURSOR POSITION
|
||||
BF_VDASAT .EQU BF_VDA + 5 ; SET CHARACTER ATTRIBUTE
|
||||
BF_VDASCO .EQU BF_VDA + 6 ; SET CHARACTER COLOR
|
||||
BF_VDAWRC .EQU BF_VDA + 7 ; WRITE CHARACTER
|
||||
BF_VDAFIL .EQU BF_VDA + 8 ; FILL
|
||||
BF_VDACPY .EQU BF_VDA + 9 ; COPY
|
||||
BF_VDASCR .EQU BF_VDA + 10 ; SCROLL
|
||||
BF_VDAKST .EQU BF_VDA + 11 ; GET KEYBOARD STATUS
|
||||
BF_VDAKFL .EQU BF_VDA + 12 ; FLUSH KEYBOARD BUFFER
|
||||
BF_VDAKRD .EQU BF_VDA + 13 ; READ KEYBOARD
|
||||
;
|
||||
BF_SYS .EQU $F0
|
||||
BF_SYSSETBNK .EQU BF_SYS + 0 ; SET CURRENT BANK
|
||||
BF_SYSGETBNK .EQU BF_SYS + 1 ; GET CURRENT BANK
|
||||
BF_SYSCPY .EQU BF_SYS + 2 ; COPY TO/FROM RAM/ROM MEMORY BANK
|
||||
BF_SYSXCPY .EQU BF_SYS + 3 ; EXTENDED COPY SETUP
|
||||
BF_SYSATTR .EQU BF_SYS + 4 ; GET/SET SYSTEM ATTRIBUTE VALUE
|
||||
;BF_SYSXXXX .EQU BF_SYS + 5 ;
|
||||
BF_SYSGETVER .EQU BF_SYS + 6 ; GET VERSION OF HBIOS
|
||||
#ENDIF
|
||||
;
|
||||
; SYSTEM ATTRIBUTE IDS
|
||||
;
|
||||
AID_BOOTVOL .EQU 0 ; BOOT VOLUME, MSB=DEV/UNIT, LSB=LU
|
||||
AID_BOOTROM .EQU 0 ; BANK ID OF ROM PAGE BOOTED
|
||||
;
|
||||
; MEMORY LAYOUT
|
||||
;
|
||||
SYS_SIZ .EQU $3000 ; COMBINED SIZE OF SYSTEM AREA (OS + HBIOS PROXY)
|
||||
HBBUF_SIZ .EQU 1024 ; INVARIANT HBIOS PHYSICAL DISK BUFFER, 1K
|
||||
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
|
||||
CPM_SIZ .EQU SYS_SIZ - HBX_SIZ ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
|
||||
CCP_SIZ .EQU $800 ; INVARIANT SIZE OF CCP
|
||||
BDOS_SIZ .EQU $E00 ; INVARIANT SIZE OF BDOS
|
||||
CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; CBIOS IS THE REMAINDER
|
||||
|
||||
MEMTOP .EQU $10000 ; INVARIANT TOP OF Z80 ADDRESSABLE MEMORY
|
||||
BNKTOP .EQU $8000 ; BANK MEMORY BARRIER
|
||||
|
||||
HBBUF_IMG .EQU BNKTOP - HBBUF_SIZ ; LOC OF DISK BUFFER IN HBIOS IMAGE BANK
|
||||
HBX_IMG .EQU BNKTOP - HBX_SIZ ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK
|
||||
|
||||
HBBUF_END .EQU BNKTOP ; END OF PHYSICAL DISK BUFFER IN HBIOS
|
||||
HBBUF_LOC .EQU HBBUF_END - HBBUF_SIZ ; START OF PHYSICAL DISK BUFFER
|
||||
HBX_END .EQU MEMTOP ; END OF HBIOS PROXY
|
||||
HBX_LOC .EQU HBX_END - HBX_SIZ ; START OF HBIOS PROXY
|
||||
CPM_END .EQU HBX_LOC ; END OF CPM COMPONENTS (INCLUDING CBIOS)
|
||||
CPM_LOC .EQU CPM_END - CPM_SIZ ; START OF CPM COMPONENTS
|
||||
CBIOS_END .EQU HBX_LOC ; END OF CBIOS
|
||||
CBIOS_LOC .EQU CBIOS_END - CBIOS_SIZ ; START OF CBIOS
|
||||
BDOS_END .EQU CBIOS_LOC ; END OF BDOS
|
||||
BDOS_LOC .EQU BDOS_END - BDOS_SIZ ; START OF BDOS
|
||||
CCP_END .EQU BDOS_LOC ; END OF CCP
|
||||
CCP_LOC .EQU CCP_END - CCP_SIZ ; START OF CCP
|
||||
|
||||
CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS)
|
||||
CCP_ENT .EQU CPM_LOC ; COMMAND PROCESSOR ENTRY POINT (IN CCP)
|
||||
|
||||
MON_LOC .EQU $C000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM
|
||||
MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE
|
||||
MON_END .EQU MON_LOC + MON_SIZ ; END OF MONITOR
|
||||
|
||||
MON_DSKY .EQU MON_LOC + (0 * 3) ; MONITOR ENTRY (DSKY)
|
||||
MON_SERIAL .EQU MON_LOC + (1 * 3) ; MONITOR ENTRY (SERIAL PORT)
|
||||
|
||||
CBIOS_BOOT .EQU CBIOS_LOC + (0 * 3)
|
||||
CBIOS_WBOOT .EQU CBIOS_LOC + (1 * 3)
|
||||
CBIOS_CONST .EQU CBIOS_LOC + (2 * 3)
|
||||
CBIOS_CONIN .EQU CBIOS_LOC + (3 * 3)
|
||||
CBIOS_CONOUT .EQU CBIOS_LOC + (4 * 3)
|
||||
CBIOS_LIST .EQU CBIOS_LOC + (5 * 3)
|
||||
CBIOS_PUNCH .EQU CBIOS_LOC + (6 * 3)
|
||||
CBIOS_READER .EQU CBIOS_LOC + (7 * 3)
|
||||
CBIOS_HOME .EQU CBIOS_LOC + (8 * 3)
|
||||
CBIOS_SELDSK .EQU CBIOS_LOC + (9 * 3)
|
||||
CBIOS_SETTRK .EQU CBIOS_LOC + (10 * 3)
|
||||
CBIOS_SETSEC .EQU CBIOS_LOC + (11 * 3)
|
||||
CBIOS_SETDMA .EQU CBIOS_LOC + (12 * 3)
|
||||
CBIOS_READ .EQU CBIOS_LOC + (13 * 3)
|
||||
CBIOS_WRITE .EQU CBIOS_LOC + (14 * 3)
|
||||
CBIOS_LISTST .EQU CBIOS_LOC + (15 * 3)
|
||||
CBIOS_SECTRN .EQU CBIOS_LOC + (16 * 3)
|
||||
;
|
||||
CDISK: .EQU 4 ; LOC IN PAGE 0 OF CURRENT DISK NUMBER 0=A,...,15=P
|
||||
IOBYTE: .EQU 3 ; LOC IN PAGE 0 OF I/O DEFINITION BYTE
|
||||
;
|
||||
; HBIOS PROXY COMMON DATA BLOCK
|
||||
; EXACTLY 32 BYTES AT $FFE0-$FFFF
|
||||
;
|
||||
HBX_XFC .EQU $10000 - $20 ; HBIOS PROXY INTERFACE AREA, 32 BYTES FIXED
|
||||
;
|
||||
HBX_XFCDAT .EQU HBX_XFC ; DATA PORTION OF HBIOX PROXY INTERFACE AREA
|
||||
HB_CURBNK .EQU HBX_XFCDAT + 0 ; CURRENTLY ACTIVE LOW MEMORY BANK ID
|
||||
HB_PRVBNK .EQU HBX_XFCDAT + 1 ; PREVIOUS BANK (BANK SELECTED PRIOR TO CURRENT BANK)
|
||||
HB_SRCADR .EQU HBX_XFCDAT + 2 ; BNKCPY: DESTINATION BANK ID
|
||||
HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID
|
||||
HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS
|
||||
HB_DSTBNK .EQU HBX_XFCDAT + 7 ; BNKCPY: SOURCE ADDRESS
|
||||
HB_CNT .EQU HBX_XFCDAT + 8 ; BNKCPY: COUNT
|
||||
;
|
||||
HBX_XFCFNS .EQU HBX_XFC + $10 ; JUMP TABLE PORTION OF HBIOS PROXY INTERFACE AREA
|
||||
HB_INVOKE .EQU HBX_XFCFNS + (0 * 3) ; INVOKE HBIOS FUNCTION
|
||||
HB_BNKSEL .EQU HBX_XFCFNS + (1 * 3) ; SELECT LOW MEMORY BANK ID
|
||||
HB_BNKCPY .EQU HBX_XFCFNS + (2 * 3) ; INTERBANK MEMORY COPY
|
||||
HB_BNKCALL .EQU HBX_XFCFNS + (3 * 3) ; INTERBANK FUNCTION CALL
|
||||
HB_LOC .EQU HBX_XFCFNS + 12 ; ADDRESS OF HBIOS PROXY START
|
||||
HB_IDENT .EQU HBX_XFCFNS + 14 ; POINTER TO HBIOS IDENT DATA BLOCK
|
||||
@@ -83,61 +83,13 @@ PC_PRTCHR:
|
||||
POP AF
|
||||
RET
|
||||
|
||||
NEWLINE2:
|
||||
CALL NEWLINE
|
||||
NEWLINE:
|
||||
CALL PC_CR
|
||||
CALL PC_LF
|
||||
RET
|
||||
;
|
||||
; PRINT THE HEX BYTE VALUE IN A
|
||||
;
|
||||
PRTHEXBYTE:
|
||||
PUSH AF
|
||||
PUSH DE
|
||||
CALL HEXASCII
|
||||
LD A,D
|
||||
CALL COUT
|
||||
LD A,E
|
||||
CALL COUT
|
||||
POP DE
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; PRINT THE HEX WORD VALUE IN BC
|
||||
;
|
||||
PRTHEXWORD:
|
||||
PUSH AF
|
||||
LD A,B
|
||||
CALL PRTHEXBYTE
|
||||
LD A,C
|
||||
CALL PRTHEXBYTE
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE
|
||||
;
|
||||
HEXASCII:
|
||||
LD D,A
|
||||
CALL HEXCONV
|
||||
LD E,A
|
||||
LD A,D
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
CALL HEXCONV
|
||||
LD D,A
|
||||
RET
|
||||
;
|
||||
; CONVERT LOW NIBBLE OF A TO ASCII HEX
|
||||
;
|
||||
HEXCONV:
|
||||
AND 0FH ;LOW NIBBLE ONLY
|
||||
ADD A,90H
|
||||
DAA
|
||||
ADC A,40H
|
||||
DAA
|
||||
RET
|
||||
;
|
||||
; OUTPUT A '$' TERMINATED STRING
|
||||
;
|
||||
WRITESTR:
|
||||
@@ -207,37 +159,13 @@ COUT:
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
LD C,A
|
||||
CALL CBIOS_CONOUT
|
||||
CALL CONOUT
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; INPUT CHARACTER TO A
|
||||
;
|
||||
CIN:
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
CALL CBIOS_CONIN
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
; RETURN INPUT STATUS IN A (0 = NO CHAR, !=0 CHAR WAITING)
|
||||
;
|
||||
CST:
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
CALL CBIOS_CONST
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
STR_PANIC .DB "\r\n\r\n>>> FATAL ERROR:$"
|
||||
STR_AF .DB " AF=$"
|
||||
STR_BC .DB " BC=$"
|
||||
@@ -283,7 +211,7 @@ MULT8_NOADD:
|
||||
RET
|
||||
;
|
||||
; FILL MEMORY AT HL WITH VALUE A, LENGTH IN BC, ALL REGS USED
|
||||
; LENGTH *MSUT* BE GREATER THAN 1 FOR PROPER OPERATION!!!
|
||||
; LENGTH *MUST* BE GREATER THAN 1 FOR PROPER OPERATION!!!
|
||||
;
|
||||
FILL:
|
||||
LD D,H ; SET DE TO HL
|
||||
@@ -294,51 +222,6 @@ FILL:
|
||||
LDIR ; DO THE REST
|
||||
RET ; RETURN
|
||||
;
|
||||
; SET A BIT IN BYTE ARRAY AT HL, INDEX IN A
|
||||
;
|
||||
BITSET:
|
||||
CALL BITLOC ; LOCATE THE BIT
|
||||
OR (HL) ; SET THE SPECIFIED BIT
|
||||
LD (HL),A ; SAVE IT
|
||||
RET ; RETURN
|
||||
;
|
||||
; CLEAR A BIT IN BYTE ARRAY AT HL, INDEX IN A
|
||||
;
|
||||
BITCLR:
|
||||
CALL BITLOC ; LOCATE THE BIT
|
||||
CPL ; INVERT ALL BITS
|
||||
AND (HL) ; CLEAR SPECIFIED BIT
|
||||
LD (HL),A ; SAVE IT
|
||||
RET ; RETURN
|
||||
;
|
||||
; GET VALUE OF A BIT IN BYTE ARRAY AT HL, INDEX IN A
|
||||
;
|
||||
BITTST:
|
||||
CALL BITLOC ; LOCATE THE BIT
|
||||
AND (HL) ; SET Z FLAG BASED ON BIT
|
||||
RET ; RETURN
|
||||
;
|
||||
; LOCATE A BIT IN BYTE ARRAY AT HL, INDEX IN A
|
||||
; RETURN WITH HL POINTING TO BYTE AND A WITH MASK FOR SPECIFIC BIT
|
||||
;
|
||||
BITLOC:
|
||||
PUSH AF ; SAVE BIT INDEX
|
||||
SRL A ; DIVIDE BY 8 TO GET BYTE INDEX
|
||||
SRL A ; "
|
||||
SRL A ; "
|
||||
LD C,A ; MOVE TO BC
|
||||
LD B,0 ; "
|
||||
ADD HL,BC ; HL NOW POINTS TO BYTE CONTAINING BIT
|
||||
POP AF ; RECOVER A (INDEX)
|
||||
AND $07 ; ISOLATE REMAINDER, Z SET IF ZERO
|
||||
LD B,A ; SETUP SHIFT COUNTER
|
||||
LD A,1 ; SETUP A WITH MASK
|
||||
RET Z ; DONE IF ZERO
|
||||
BITLOC1:
|
||||
SLA A ; SHIFT
|
||||
DJNZ BITLOC1 ; LOOP AS NEEDED
|
||||
RET ; DONE
|
||||
;
|
||||
; PRINT VALUE OF A IN DECIMAL WITH LEADING ZERO SUPPRESSION
|
||||
;
|
||||
PRTDECB:
|
||||
@@ -387,8 +270,52 @@ PRTDEC2:
|
||||
PRTDEC3:
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
; DATA
|
||||
;==================================================================================================
|
||||
; PRINT THE HEX BYTE VALUE IN A
|
||||
;
|
||||
STR_EMPTY .TEXT "<EMPTY>$"
|
||||
PRTHEXBYTE:
|
||||
PUSH AF
|
||||
PUSH DE
|
||||
CALL HEXASCII
|
||||
LD A,D
|
||||
CALL COUT
|
||||
LD A,E
|
||||
CALL COUT
|
||||
POP DE
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; PRINT THE HEX WORD VALUE IN BC
|
||||
;
|
||||
PRTHEXWORD:
|
||||
PUSH AF
|
||||
LD A,B
|
||||
CALL PRTHEXBYTE
|
||||
LD A,C
|
||||
CALL PRTHEXBYTE
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE
|
||||
;
|
||||
HEXASCII:
|
||||
LD D,A
|
||||
CALL HEXCONV
|
||||
LD E,A
|
||||
LD A,D
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
CALL HEXCONV
|
||||
LD D,A
|
||||
RET
|
||||
;
|
||||
; CONVERT LOW NIBBLE OF A TO ASCII HEX
|
||||
;
|
||||
HEXCONV:
|
||||
AND 0FH ;LOW NIBBLE ONLY
|
||||
ADD A,90H
|
||||
DAA
|
||||
ADC A,40H
|
||||
DAA
|
||||
RET
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#DEFINE RMJ 2
|
||||
#DEFINE RMN 7
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.7.0"
|
||||
#DEFINE BIOSBLD "Build 0 Developmental"
|
||||
#DEFINE REVISION 500
|
||||
#DEFINE BIOSVER "2.7.1"
|
||||
|
||||
Reference in New Issue
Block a user