sys7.1-doc-wip/Internal/Asm/IntModemMgrPrivEqu.a
2019-07-27 22:37:48 +08:00

185 lines
7.3 KiB
Plaintext

;__________________________________________________________________________________________________
;
; File: IntModemMgrPrivEqu.a
;
; Contains: Private equates for the internal modem manager
;
; Written by: Steven Swenson
;
; Copyright © 1993-1993 by Apple Computer, Inc. All rights reserved.
;
; Change History (most recent first):
;
; <1> 4/8/93 SES first checked in
;__________________________________________________________________________________________________
;----------------------------------------------------------------------
; internal modem manager version number. Change this when you rev the manager!
;----------------------------------------------------------------------
immgVersion EQU $110 ; version 1.10
;----------------------------------------------------------------------
; internal modem manager useful equates
;----------------------------------------------------------------------
UnimplTrap EQU $A89F
IntMdmMgrTrap EQU $ABEA
;----------------------------------------------------------------------
; internal modem manager private routine selectors
;----------------------------------------------------------------------
selIModemInit EQU 0
selIModemInfo EQU 11
selIModemClose EQU 12
;----------------------------------------------------------------------
; internal modem manager modem primitive routine selectors
;----------------------------------------------------------------------
selMPType EQU 0
selMPPower EQU 1
selMPWakeUp EQU 2
selMPStatus EQU 3
selMPPrime EQU 4
selMPSndCtl EQU 5
selMPExists EQU 6
selMPSetUp EQU 7
selMPTearDown EQU 8
selMPName EQU 9
selMPSndVol EQU 10
selMPSndHW EQU 11
;----------------------------------------------------------------------
; internal modem manager routine macros
;----------------------------------------------------------------------
MACRO
_IModemInit
move.w #selIModemInit,d0
_IntModemDispatch
ENDM
MACRO
_IModemInfo
move.w #selIModemInfo,d0
_IntModemDispatch
ENDM
MACRO
_IModemClose
move.w #selIModemClose,d0
_IntModemDispatch
ENDM
;----------------------------------------------------------------------------------------
; Internal modem manager dispatch table structure
;----------------------------------------------------------------------------------------
immgDispTable RECORD 0
dispFlags DS.W 1 ; flags reserved for Apple use
numDisp DS.W 1 ; number of dispatch functions in table
; if you add any more private storage fields to this record, add them above here.
; Make sure you update the ImmgInit function to set up the private storage correctly.
; if you add any more dispatch functions, add them to the end of the table.
dispOffset EQU *-immgDispTable ; offset to this point
mdmInit DS.L 1 ; modem init routine
mdmPower DS.L 1 ; modem power routine
mdmWakeUp DS.L 1 ; modem wake up routine
mdmStatus DS.L 1 ; modem status routine
mdmPrime DS.L 1 ; modem prime routine
mdmSndCtl DS.L 1 ; modem sound control routine
mdmGetInd DS.L 1 ; modem get indexed routine
mdmFind DS.L 1 ; modem find routine
mdmInstall DS.L 1 ; modem install routine
mdmRemove DS.L 1 ; modem remove routine
mdmGetName DS.L 1 ; modem name routine
mdmInfo DS.L 1 ; modem version info routine
mdmClose DS.L 1 ; modem close routine
mdmSndVol DS.L 1 ; modem sound volume routine
mdmSndHW DS.L 1 ; modem sound HW arbitration routine
size EQU *-immgDispTable ; size of record
ENDR
;----------------------------------------------------------------------------------------
; Internal modem manager modem queue element structure
;----------------------------------------------------------------------------------------
immgQEl RECORD 0
qLink DS.L 1 ; next queue element
qType DS.W 1 ; type of queue element (0)
qMdmID DS.W 1 ; ID of the installed modem
qMdmPrimPtr DS.L 1 ; pointer to the primitives table
optionalA1 DS.L 1 ; pointer passed to prims in A1
size EQU *-immgQEl ; size of record
ENDR
;----------------------------------------------------------------------------------------
; Internal modem manager global storage data structure
;----------------------------------------------------------------------------------------
immgGlobals RECORD 0
dispTable DS.L 1 ; pointer to dispatch table
mdmQ DS.L 1 ; pointer to modem queue header
;primStorage DS.L 1 ; private storage for machine primitives
lastMdmID DS.W 1 ; last modem ID used
version DS.W 1 ; version of the modem manager
size EQU *-immgGlobals ; size of record
ENDR
;••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
;••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
; These next two structures are for setting up the modem manager primitives in the ROM.
; The product info record holds an offset to the immgRootTable for the machine. From
; that offset, the modem manager initializes all of its structures. All tables in ROM
; hold offsets from the beginning of the table.
;
; Both the immgDispTable and any immgPrimTables used are copied into RAM at modem
; manager init time, and their offsets are converted into absolute addresses.
; IModemInstall is called once for each mdmList element found in the ROM.
;
; The structure of all of this is as follows.
;
; ----------------
; product info rec
; ...
; +------ ImmgPrimPtr
; | ...
; | ----------------
; |
; | +----> immgPrimTable (from IntModemMgrEqu.a)
; | ---------------- | primFlags
; +-> immgMdmList | ...
; primTable ------+ mdmName
; +------ mdmListPtr ----------------
; | ----------------
; | ----------------
; | +----> immgPrimTable
; | ---------------- | primFlags
; +-> immgMdmList | ...
; primTable ------+ mdmName
; NULL ----------------
; ----------------
;
;••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
;••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
;----------------------------------------------------------------------------------------
; Internal modem manager modem list data structure
;----------------------------------------------------------------------------------------
immgMdmList RECORD 0
primTable DS.L 1 ; offset to modem primitives table
mdmListPtr DS.L 1 ; offset to next modem primitives element
size EQU *-immgMdmList ; size of record
ENDR