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.
276 lines
6.9 KiB
276 lines
6.9 KiB
==========================
|
|
HBIOS Management Functions
|
|
==========================
|
|
|
|
GET ($05):
|
|
BC=Function/Subfunction A=Result
|
|
|
|
Subfunctions:
|
|
|
|
CIOCNT ($00):
|
|
BC=Function/Subfunction A=Result
|
|
E=Serial Unit Count
|
|
|
|
DIOCNT ($10):
|
|
BC=Function/Subfunction A=Result
|
|
E=Disk Unit Count
|
|
|
|
BIOSVER ($F0):
|
|
BC=Function/Subfunction A=Result
|
|
DE=BIOS Version
|
|
L=Platform
|
|
|
|
SET ($06):
|
|
BC=Function/Subfunction A=Result
|
|
|
|
|
|
|
|
|
|
|
|
================
|
|
Serial Functions
|
|
================
|
|
|
|
IN ($00):
|
|
BC=Function/Unit A=Result
|
|
E=Byte Input
|
|
|
|
Wait for a single character to be available at the specified device and return the character in E. Function
|
|
will wait indefinitely for a character to be available.
|
|
|
|
OUT ($01):
|
|
BC=Function/Unit A=Result
|
|
E=Character to Output
|
|
|
|
Wait for device/unit to be ready to send a character, then send the character specified in E.
|
|
|
|
IST ($02):
|
|
BC=Function/Unit A=Result
|
|
*E=# Bytes Pending
|
|
|
|
OST ($03):
|
|
BC=Function/Unit A=Result
|
|
*E=# Buffer Bytes Available
|
|
|
|
INIT ($04):
|
|
BC=Function/Unit A=Result
|
|
DE=Line Characteristics
|
|
|
|
QUERY ($05)
|
|
BC=Function/Unit A=Result
|
|
DE=Line Characteristics
|
|
|
|
DEVICE ($06):
|
|
BC=Function/Unit A=Result
|
|
D=Device Type
|
|
E=Physical Unit
|
|
|
|
==============
|
|
Disk Functions
|
|
==============
|
|
|
|
STATUS ($10):
|
|
BC=Function/Unit A=Result
|
|
|
|
Return current status result code of specified unit. Does not clear
|
|
the status.
|
|
|
|
RESET ($11):
|
|
BC=Function/Unit A=Result
|
|
|
|
Reset the physical interface associated with the specified unit. Flag all units
|
|
associated with the interface for unit initialization at next I/O call. Clear
|
|
media identified unless locked. Reset result code of all associated units.
|
|
|
|
SEEK ($12):
|
|
BC=Function/Unit A=Result
|
|
D:7=Address Type (0=CHS, 1=LBA)
|
|
CHS: D:0-6=Head,E=Sector,HL=Track
|
|
LBA: DE:HL
|
|
|
|
Update target CHS or LBA for next I/O request on designated unit.
|
|
Physical seek is typically deferred until subsequent I/O operation.
|
|
|
|
READ ($13) / WRITE ($14) / VERIFY ($15):
|
|
BC=Function/Unit A=Result
|
|
HL=Buffer Address
|
|
E=Block Count
|
|
|
|
Read, write, or verify sectors starting at current target sector. Current
|
|
target sector is incremented on each successful operation. On error,
|
|
target sector is sector where error occurred.
|
|
|
|
FORMAT ($16):
|
|
BC=Function/Unit A=Result
|
|
CHS: D=Head, HL=Cylinder
|
|
E=Fill Byte
|
|
|
|
Format the designated track using the current media_id. Many devices
|
|
do not support a true format operation. If so, format should write
|
|
sectors with designated fill byte.
|
|
|
|
*** Need to specify interleave/sector id's somehow.
|
|
|
|
DEVICE ($17)
|
|
BC=Function/Unit A=Result
|
|
D=Device Type
|
|
E=Physical Unit
|
|
|
|
Report the device type (Floppy, IDE, SD, etc.) and physical unit number. Call
|
|
does not perform any I/O and succeeds even if the device is in an error state.
|
|
It does not reset the unit status.
|
|
|
|
MEDIA ($18):
|
|
BC=Function/Unit A=Result
|
|
E0:=Enable Media Discovery E=Media ID (legacy)
|
|
|
|
Report the media definition for media in specified unit. If bit 0 of E is
|
|
set, then perform media discovery or verification. If no media in device,
|
|
return no media error.
|
|
|
|
DEFMED ($19):
|
|
BC=Function/Unit A=Result
|
|
E=Media ID (legacy)
|
|
|
|
Define media in unit.
|
|
|
|
CAPACITY ($1A):
|
|
BC=Function/Unit DE:HL=Blocks on Device
|
|
BC=Block Size
|
|
A=Result
|
|
|
|
Return device capacity information.
|
|
If media is unknown, return error (no media)
|
|
|
|
GEOMETRY ($1B):
|
|
BC=Function/Unit HL=Cylinders
|
|
D:0-6=Heads
|
|
D:7=LBA Capable
|
|
E=Sectors
|
|
BC=Block Size
|
|
A=Result
|
|
|
|
Return device geometry information.
|
|
If media is unknown, return error (no media)
|
|
|
|
INFO ($1F):
|
|
BC=Function/Sub-function A=Result
|
|
|
|
C=0: Report total unit count in system:
|
|
BC=Function/Sub-function A=Result
|
|
B=Count
|
|
|
|
|
|
|
|
A: RAM0 B: ROM0 C:
|
|
|
|
|
|
|
|
Unit Device Board Part Slice Cap
|
|
------- ------- ------- ------- ------- -------
|
|
#0 RAM MK4 384K
|
|
#1 ROM MK4 384K
|
|
#2 FD0 DIO3 3.5" DS/HD
|
|
#3 IDE0 DIO3 0 8M
|
|
|
|
|
|
|
|
Unit 0: RAMDISK on MK4 (384K)
|
|
Unit 1: ROMDISK on MK4 (384K)
|
|
Unit 2: FD0 on DISKIO3 (3.5")
|
|
Unit 3: FD1 on DISKIO3 (5.25")
|
|
Unit 4: IDE0 on DISKIO3 (4096M)
|
|
|
|
A: RAM0 MK4 RAM Disk, 384K
|
|
B: ROM0 MK4 ROM Disk, 384K
|
|
C: FD0 DiskIO3 Floppy Disk 0, 3.5" DS/HD
|
|
D: FD1 DiskIO3 Floppy Disk 1, 5.25" DS/DD
|
|
E: IDE0:0 MK4 IDE Hard Disk 0, Slice 0, 8M
|
|
F: IDE0:1 MK4 IDE Hard Disk 0, Slice 1, 8M
|
|
G: PRPSD0:0 PropIO SD Card, Slice 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0: RAM- RAMdrive on the Z180 SBC Mark IV board
|
|
LBASupported UserAddressableSectors 832
|
|
|
|
1: ROM- ROMdrive on the Z180 SBC Mark IV board
|
|
LBASupported UserAddressableSectors 768
|
|
|
|
2: IDE- SanDisk SDCFHSNJC-004G
|
|
s/n: DMZ031215013440 fmw: HDX 7.08
|
|
CHS: 7751:16:63 nSectors 7813008 MaxBlkTransfer 1
|
|
LBASupported UserAddressableSectors 7813120
|
|
|
|
3: IDE- SanDisk SDCFHSNJC-004G
|
|
s/n: BKZ031215015432 fmw: HDX 7.08
|
|
CHS: 7751:16:63 nSectors 7813008 MaxBlkTransfer 1
|
|
LBASupported UserAddressableSectors 7813120
|
|
|
|
4: SD- SD SU02G
|
|
s/n: 139401536 fmw: 8.0 d/c: 2013-07
|
|
LBASupported UserAddressableSectors 1931264
|
|
|
|
Boot UNA unit number or ROM? [R,X,0..4] (R):
|
|
|
|
N8VEM UNA CP/M (Will Sowerbutts, 2014-08-01 git cbed09)
|
|
|
|
Unit Disk Driver Capacity Slices Start LBA Flags
|
|
0 RAM0 Memory 416.0KB 1 0x00000000 (formatted)
|
|
1 ROM0 Memory 384.0KB 1 0x00000000
|
|
2 IDE0 Dual-IDE 3.7GB 469 0x00000000 MBR FGN
|
|
3 IDE1 Dual-IDE 3.7GB 469 0x00000000 MBR FGN
|
|
4 SD0 CSIO-SD 943.0MB 0 0x00000000 MBR FGN
|
|
|
|
Drive A: assigned to RAM0 slice 0
|
|
Drive B: assigned to ROM0 slice 0
|
|
Drive C: assigned to IDE0 slice 0
|
|
Drive D: assigned to IDE1 slice 0
|
|
|
|
Loading Residual CP/M at 0xE100 ... done.
|
|
CP/M 2.2 Copyright 1979 (c) by Digital Research
|
|
|
|
---
|
|
|
|
<VDA>_INIT:
|
|
- ADD OURSELVES TO VDA_TBL
|
|
- ADD OURSELVES TO CIO_TBL & RECORD <VDA>_CIOUNIT
|
|
- INIT HARDWARE
|
|
- GOTO <VDA>_INI
|
|
|
|
<VDA>_INI:
|
|
- CALL <VDA>_RES
|
|
- INITIALIZE EMULATION BY CALLING EMU_INIT (PASS IN B=EMU_TYPE, C=VDA CIO UNIT NUM, DE=VDA DISPATCH ADR)
|
|
- RECORD DE (EMULATOR CIO DISPATCH ADR) <VDA>_CIODISPADR TO FORWARD SUBSEQUENT CIO FUNCTION CALLS
|
|
- RETURN (A=STATUS)
|
|
|
|
<VDA>_RES:
|
|
- RESET HARDWARE
|
|
- RETURN (A=STATUS)
|
|
|
|
EMU_INIT: (B=EMU TYPE, C=VDA CIO UNIT #, DE=VDA DISPATCH ADR) ==> (DE=EMULATOR CIO DISPATCH ADR)
|
|
- GOTO TO <EMU>_INIT BASED ON VALUE IN B
|
|
|
|
<EMU>_INIT: (C=VDA CIO UNIT #, DE=VDA DISPATCH ADR) ==> (DE=EMULATOR CIO DISPATCH ADR)
|
|
- RECORD C (VDA CIO UNIT) IN <EMU>_VDACIOUNIT SO <EMU>_DEVICE FUNCTION CAN RETURN IT
|
|
- RECORD DE IN <EMU>_VDADISPADR FOR LATER USE IN CALLING PARENT VDA DRIVER
|
|
- INITIALIZE/RESET EMULATION ENGINE
|
|
- RETURN (A=STATUS, DE=EMULATOR CIO DISPATCH)
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------
|
|
md
|
|
hdsk
|
|
rf
|
|
ide
|
|
sd
|
|
ppide
|
|
fd
|
|
prp
|
|
ppp
|
|
|