mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
6.6 KiB
170 lines
6.6 KiB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; HBIOS FUNCTIONS
|
|
;
|
|
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_CIOGETCNT .EQU BF_CIO + 8 ; CHARACTER DEVICE COUNT
|
|
BF_CIOGETINF .EQU BF_CIO + 9 ; CHARACTER DEVICE INFO
|
|
;
|
|
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_DIOGETCNT .EQU BF_DIO + 10 ; DISK DEVICE COUNT
|
|
BF_DIOGETINF .EQU BF_DIO + 11 ; DISK DEVICE INFO
|
|
;
|
|
BF_NDIO .EQU $50
|
|
BF_NDIOSEEK .EQU BF_DIO + 0 ; DISK SEEK
|
|
BF_NDIOREAD .EQU BF_DIO + 1 ; DISK READ
|
|
BF_NDIOWRITE .EQU BF_DIO + 2 ; DISK WRITE
|
|
BF_NDIOSTAT .EQU BF_DIO + 3 ; DISK STATUS
|
|
BF_NDIORESET .EQU BF_DIO + 4 ; DISK RESET
|
|
BF_NDIOCAP .EQU BF_DIO + 5 ; GET DISK CAPACITY
|
|
BF_NDIOGEOM .EQU BF_DIO + 6 ; GET DISK GEOMETRY
|
|
BF_NDIOGETPAR .EQU BF_DIO + 7 ; GET DISK PARAMS
|
|
BF_NDIOSETPAR .EQU BF_DIO + 8 ; SET DISK PARAMS
|
|
;
|
|
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_SYSGETVER .EQU BF_SYS + 6 ; GET VERSION OF HBIOS
|
|
BF_SYSHCBGETB .EQU BF_SYS + 8 ; GET HCB BYTE VALUE
|
|
BF_SYSHCBPUTB .EQU BF_SYS + 9 ; PUT HCB BYTE VALUE
|
|
BF_SYSHCBGETW .EQU BF_SYS + 10 ; GET HCB WORD VALUE
|
|
BF_SYSHCBPUTW .EQU BF_SYS + 11 ; PUT HCB BYTE VALUE
|
|
;
|
|
; 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 $D0
|
|
CIODEV_VDA .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
|
|
;
|
|
; HBIOS CONTROL BLOCK OFFSETS
|
|
; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES
|
|
; IT IS STRONGLY RECOMMENDED THAT YOU DO NOT USE THEM!
|
|
;
|
|
HCB_LOC .EQU $100 ; LOCATION OF HCB IN HBIOS BANK
|
|
HCB_SIZ .EQU $100 ; SIZE OF HCB DATA BLOCK
|
|
;
|
|
HCB_CPUMHZ .EQU $05 ; CPU SPEED IN MHZ (BYTE)
|
|
HCB_CPUKHZ .EQU $06 ; CPU SPEED IN KHZ (WORD)
|
|
HCB_RAMBANKS .EQU $08 ; TOTAL SIZE OF RAM IN 32K BANKS (BYTE)
|
|
HCB_ROMBANKS .EQU $09 ; TOTAL SIZE OF ROM IN 32K BANKS (BYTE)
|
|
HCB_BOOTVOL .EQU $0A ; BOOT VOLUME, MSB=DEV/UNIT, LSB=LU (WORD)
|
|
HCB_BOOTBID .EQU $0C ; BANK ID OF ROM PAGE BOOTED (BYTE)
|
|
HCB_SERDEV .EQU $0D ; PRIMARY SERIAL DEVICE/UNIT (BYTE)
|
|
HCB_CRTDEV .EQU $0E ; CRT DISPLAY DEVICE/UNIT (BYTE)
|
|
HCB_CONDEV .EQU $0F ; ACTIVE CONSOLE DEVICE/UNIT (BYTE)
|
|
HCB_CUREMU .EQU $10 ; CURRENT VDA TERMINAL EMULATION
|
|
HCB_CURVDA .EQU $11 ; CURRENT VDA TARGET FOR EMULATION
|
|
|
|
; MEMORY BANK IDS (ONE BYTE EACH)
|
|
HCB_BIDCOM .EQU $D8 ; COMMON BANK (UPPER 32K)
|
|
HCB_BIDUSR .EQU $D9 ; USER BANK (TPA)
|
|
HCB_BIDBIOS .EQU $DA ; BIOS BANK (HBIOS, UBIOS)
|
|
HCB_BIDAUX .EQU $DB ; AUX BANK (BPBIOS)
|
|
HCB_BIDRAMD0 .EQU $DC ; FIRST BANK OF RAM DRIVE
|
|
HCB_BIDRAMDN .EQU $DD ; LAST BANK OF RAM DRIVE
|
|
HCB_BIDROMD0 .EQU $DE ; FIRST BANK OF ROM DRIVE
|
|
HCB_BIDROMDN .EQU $DF ; LAST BANK OF ROM DRIVE
|
|
|
|
; DEVICE LISTS (POINTS TO START OF LIST, PREFIXED BY ENTRY COUNT)
|
|
HCB_CDL .EQU $E0 + 1 ; CHARACTER DEVICES (MAX 7)
|
|
HCB_PDL .EQU $E8 + 1 ; PRINT DEVICE LIST (MAX 3)
|
|
HCB_VDL .EQU $EC + 1 ; VIDEO DEVICE LIST (MAX 3)
|
|
HCB_DDL .EQU $F0 + 1 ; DISK DEVICE LIST (MAX 15)
|
|
;
|
|
; 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 HBIOS PROXY INTERFACE AREA
|
|
HB_CURBNK .EQU HBX_XFCDAT + 0 ; CURRENTLY ACTIVE LOW MEMORY BANK ID
|
|
;HB_PRVBNK .EQU HBX_XFCDAT + 1 ; PREVIOUS BANK (DEPRECATED)
|
|
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 (DEPRECATED)
|
|
HB_IDENT .EQU HBX_XFCFNS + 14 ; POINTER TO HBIOS IDENT DATA BLOCK
|
|
|