Browse Source

Update API.txt

pull/48/head
Wayne Warthen 7 years ago
parent
commit
381d62a733
  1. 32
      Source/HBIOS/API.txt

32
Source/HBIOS/API.txt

@ -132,7 +132,7 @@ INT ($FC): Interrupt vector management functions
INTSET ($20): Set interrupt vector
BC=Function/Subfunction A=Result
HL=Interrupt Vector HL=Previous Vector
E=Interrupt Vector Table Position DE=Interrupt Routing Engine Address
E=Interrupt Vector Table Position
Set the Interrupt Vector for the specified Interrupt Vector Table Position to the
specified Interrupt Vector. The previous value at the specified table position
@ -151,28 +151,25 @@ INT ($FC): Interrupt vector management functions
must be saved and restored by the interrupt handler.
Interrupt handlers are different for IM1 or IM2.
For IM1:
The new interrupt handler is responsible for chaining (JP) to the previous vector
if the interrupt is not handled. The interrupt handler must return with ZF set
if interrupt is handled and ZF cleared if not handled.
if the interrupt is not handled. If the interrupt is handled, the new handler may
simply return (RET) with ZF cleared (NZ).
For IM2:
The interrupt handler requires an invocation stub separate from the actual interrupt
handling code. The stub must be:
The new interrupt handler may either replace or hook the previous interrupt
handler. To replace the previous interrupt handler, the new handler just returns
(RET) when done. To hook the previous handler, the new handler can chain (JP)
to the previous vector. Note that initially all IM2 interrupt vectors are set
to be handled as “BAD” meaning that the interrupt is unexpected. In most cases,
you do not want to chain to the previous vector because it will cause the
interrupt to display a “BAD INT” system panic message.
PUSH HL
LD HL,<adr of actual interrupt handler>
JP <adr of int routing engine>
When calling Set Interrupt Vector, the address of the stub must be provided for the
Interrupt Vector parameter. The address of the Interrupt Routing Engine will be
returned in DE and must be inserted into the stub code as indicated above. In the
case of IM2 mode interrutps, the actual interrupt handler should not chain to the
previous entry. The new interrupt handler must assume all responsibilities for
the specific interrupt slot being occupied.
The interrupt framework will take care of issuing an EI and RETI instruction.
Do not put these instructions in your new handler.
If the caller is transient, then the caller must remove the new interrupt handler and
restore the original one prior to termination. This is accomplished by calling this
@ -236,8 +233,9 @@ DEVICE ($06):
Serial Device Attributes Byte:
7: 0=RS-232, 1=Terminal
6: 1=Parallel Port
If Terminal, 3-0 is attached Video Unit #
If device is of type Terminal, bits 3-0 indicate attached Video Unit #
==============
Disk Functions

Loading…
Cancel
Save