LmpInfoSeg MACRO
;********************************************************************************
; LMP LAYER
;********************************************************************************
;
; lap2lmpConnectIndication() call
; lap2lmpDisconnectIndication()
;
; lap2lmpRxData(w=Data) ;Incomming data bytes
; lap2lmpRxValid() call ;Data bytes passed since RxFrame message are valid
; lap2lmpRxError() call ;Data bytes passed since RxFrame message are invalid
;
; lap2lmpTxFrame(ret z=None) call
; lap2lmpTxData(ret w=Data ret z=Last) call ;Payload layer can accept a data byte (for an I frame) if there is one available. if there is data available then lmp returns data byte and sets z to false
; lap2lmpTxValid() call ;Lap layer is indicating that all data passed since last TxStart message was acknowledged
; lap2lmpTxError() call ;Lap layer is indicating that all data passed since last TxStart message will need to be sent again
;
;********************************************************************************
ENDM
LmpDataSeg MACRO
;********************************************************************************
; LMP LAYER
;********************************************************************************
org $90
lmpBank = $90 ;16 bytes
lmpPosition ds 1 ;Position of multi byte stages
lmpData ds 1 ;Temporary Data storage
lmpAppLSAP ds 1 ;LSAP number of remote CommApp (or 0 if not connected)
lmpAppStatus ds 1
lmpRxState ds 1 ;Current Rx state
lmpRxDLSAP ds 1 ;Received DLSAP
lmpRxSLSAP ds 1 ;Received SLSAP
lmpRxInfo ds 4
lmpRxLMPCmdOpcode = lmpRxInfo + 0 ;LMP Command frames : holds opcode
lmpRxIASErrOpcode = lmpRxInfo + 0 ;IAS frame : holds service request
lmpRxIASErrRetCode = lmpRxInfo + 1 ;IAS frame : holds return code for service request
lmpRxSendStringL = lmpRxInfo + 2 ;SendStringH = _lmpTxStringSegment
lmpRxPostTest = lmpRxInfo + 3
lmpTxState ds 1 ;Current Tx state
lmpTxDLSAP ds 1 ;Transmit DLSAP = Received SLSAP
lmpTxSLSAP ds 1 ;Transmit SLSAP = Received DLSAP
lmpTxInfo ds 2
lmpTxIASErrOpcode = lmpTxInfo + 0 ;IAS frame : holds service request
lmpTxIASErrRetCode = lmpTxInfo + 1 ;IAS frame : holds return code for service request
lmpTxStringH = lmpTxInfo + 0
lmpTxStringL = lmpTxInfo + 1
lmpConnectCmdOpcode = $01
lmpConnectRspOpcode = $81
lmpDisconnectOpcode = $02
lmpAccessCmdOpcode = $03
lmpAccessRspOpcode = $83
lmpLSAPServer = 0
lmpLSAPComm = 5 ;Random number between 1 and 6F
lmpAppRxFlag = lmpAppStatus.0 ;Indicates that app layer has been passed unacknoldged data
lmpAppTxFlag = lmpAppStatus.1 ;Indicates that app layer is passing data or has passed data that has not yet been acknoldged
lmpRxDataMode = %00000000 ;More data is required
lmpRxVerifyMode = %10000000 ;Waiting for frame to complete
lmpRxSLSAPState = 1 + lmpRxDataMode ;Second byte = Source LSAP
lmpRxLMPCmdOpcodeState = 2 + lmpRxDataMode ;LMP Command : Opcode
lmpRxIASCmdState = 3 + lmpRxDataMode ;IAS Data :
lmpRxIASClassLengthState = 4 + lmpRxDataMode ;IAS Data :
lmpRxIASClassTestState = 5 + lmpRxDataMode ;IAS Data :
lmpRxIASDeviceAttribState = 6 + lmpRxDataMode ;IAS Data :
lmpRxIASCommAttribState = 7 + lmpRxDataMode ;IAS Data :
lmpRxIASAttribTestState = 8 + lmpRxDataMode ;IAS Data :
lmpRxCommDataState = 9 + lmpRxDataMode ;Comm Data
lmpRxBadLSAPState = 1 + lmpRxVerifyMode ;Error state : Invalid Dest LSAP
lmpRxLMPCmdVerifyState = 2 + lmpRxVerifyMode ;LMP Command : Verify
lmpRxIASAttribVerifyState = 3 + lmpRxVerifyMode ;IAS Data :
lmpRxIASErrorState = 4 + lmpRxVerifyMode ;IAS Data :
lmpTxStringState = 1 ;Send a string
lmpTxIASErrorState = 2 ;Reply stating that the IAS service is an un-supported option or error
lmpTxCommDataState = 3 ;Sending Comm Data
;********************************************************************************
ENDM
LmpCodeSeg MACRO
;********************************************************************************
; LMP LAYER
;********************************************************************************
;********** a2lmpReset **********
a2lmpReset
bank lmpBank
clr lmpRxState
clr lmpTxState
clr lmpAppLSAP
retp
;********** lap2lmpConnectIndication **********
lap2lmpConnectIndication = a2lmpReset
;********** lap2lmpDisconnectIndication **********
lap2lmpDisconnectIndication = a2lmpReset
;********** lap2lmpRxData **********
lap2lmpRxData
bank lmpBank
mov lmpData, w ;Store data
snb lmpRxState.7 ;Interested in data ? (lmpRxDataMode)
retp
mov w, lmpRxState ;Jump based on state
jmp PC+w
jmp lmpRxDLSAPByte ; 0 = lmpIdleState
jmp lmpRxSLSAPByte ; 1 = lmpRxSLSAPState
jmp lmpRxCmdOpcodeByte ; 2 = lmpRxLMPCmdOpcodeState
jmp lmpRxIASCmd ; 3 = lmpRxIASCmdState
jmp lmpRxIASClassLength ; 4 = lmpRxIASClassLengthState
jmp lmpRxIASStringTest ; 5 = lmpRxIASClassTestState
jmp lmpRxIASDeviceAttrib ; 6 = lmpRxIASDeviceAttribState
jmp lmpRxIASCommAttrib ; 7 = lmpRxIASCommAttribState
jmp lmpRxIASStringTest ; 8 = lmpRxIASAttribTestState
jmp lmpRxCommData ; 9 = lmpRxCommDataState
;********** lap2lmpRxValid **********
lap2lmpRxValid
debugl IFrameDataRx, '^'
bank lmpBank
snb lmpAppRxFlag ;CommData ?
jmp lmpRxValidCommData ;Yes => process
sb lmpRxState.7 ;Interested in valid ? (lmpRxVerifyMode)
retp
mov w, lmpRxState ;Jump based on state
and w, #%01111111 ;Remove Mode bit
clr lmpRxState ;Clear RxState back to idle
jmp PC+w
retp ; 0 = lmpIdleState (invalid)
jmp lmpRxBadLSAP ; 1 = lmpRxBadLSAPState
jmp lmpRxValidLMPCommand ; 2 = lmpRxLMPCmdVerifyState
jmp lmpRxValidIASAttribVerify ; 3 = lmpRxIASAttribVerifyState
jmp lmpRxValidIASError ; 4 = lmpRxIASErrorState
;********** lap2lmpRxInvalid **********
lap2lmpRxError
debugl IFrameDataRx, '!'
setb ledERR ;Turn ERR led on
bank lmpBank
clr lmpRxState ;Return to idle state
sb lmpAppRxFlag ;CommDataMode ?
retp ;No => return
clrb lmpAppRxFlag ;Clear flag
jmp @lmp2appRxCommError ;Yes => Inform app layer of valid (app layer will issue ret instruction)
;********** lap2lmpTxData **********
lap2lmpTxFrame
bank lmpBank
clr lmpPosition
test lmpTxState ;Idle state ?
jnz :Send
:Idle test lmpAppLSAP ;LMP Connection open to comm layer ?
snz ;Zero indicates no connection
retp ;No => indicate no data and return
call @lmp2appTxCommStart ;Yes => find out if data to send
snz ;Data to send
retp ;No => indicate no data and return
bank lmpBank
mov lmpTxState, #lmpTxCommDataState ;Prepare to transmit frame
mov lmpTxDLSAP, lmpAppLSAP ;Ensure correct DLSAP
mov lmpTxSLSAP, #lmpLSAPComm ;Ensure correct SLSAP
mov lmpPosition, #lapMaxFrameSize-2 ;Protect frame size (LAP frame size less DLSAP and SLSAP bytes)
:Send mov w, lmpTxDLSAP ;Desired DLSAP
bank plBank
mov plIDataDLSAP, w ;Store for transmission
bank lmpBank
mov w, lmpTxSLSAP ;Desired SLSAP
bank plBank
mov plIDataSLSAP, w ;Store for transmission
clz ;Indicate more data to follow
retp
;********** lap2lmpTxData **********
lap2lmpTxData ;Lap layer can accept a data byte (for an I frame) if there is one available. if there is data available then lmp returns data byte and sets z to false
bank lmpBank
mov w, lmpTxState ;Jump based on state
jmp PC+w ;Jump based on state
retp ; 0 = Idle state (cannot receive TxData in idle state)
jmp lmpTxString ; 1 = lmpTxStringState
jmp lmpTxIASError ; 2 = lmpTxIASErrorState
jmp lmpTxCommData ; 3 = lmpTxCommDataState
;********** lap2lmpTxValid **********
lap2lmpTxValid ;Lap layer is indicating that all data passed since last TxStart message was acknowledged
debugl IFrameDataTx, '^'
bank lmpBank
clr lmpTxState ;Return to idle state
sb lmpAppTxFlag ;Transmitting app data ?
retp ;No => return
clrb lmpAppTxFlag
jmp @lmp2appTxCommValid ;Yes => Inform app layer of valid (app layer will issue ret instruction)
;********** lap2lmpTxError **********
lap2lmpTxError ;Lap layer is indicating that all data passed since last TxStart message will need to be sent again
debugl IFrameDataTx, '!'
setb ledERR ;Turn ERR led on
bank lmpBank
sb lmpAppTxFlag ;Transmitting app data ?
retp ;No => return (stay in this state for retransmission)
clrb lmpAppTxFlag
jmp @lmp2appTxCommError ;Yes => Inform app layer of error (app layer will issue ret instruction)
;********************************************************************************
; LMP LAYER - Rx
;********************************************************************************
lmpRx2TxSetup
mov lmpTxDLSAP, lmpRxSLSAP ;DLSAP = received SLSAP
mov lmpTxSLSAP, lmpRxDLSAP ;SLSAP = received DLSAP
retp
;********************************************************************************
;********** lap2lmpRxData - RxDLSAPState **********
lmpRxDLSAPByte
mov lmpRxDLSAP, lmpData ;Store data
inc lmpRxState ;Next state = lmpRxSLSAPState
retp
;********** lap2lmpRxData - RxSLSAPState **********
lmpRxSLSAPByte
mov lmpRxSLSAP, lmpData ;Store data
clrb lmpRxSLSAP.7 ;Ensure MSB is clear
snb lmpRxDLSAP.7 ;Is this a LMP-Command frame (DLSAP bit 7 set) ?
jmp :Cmd ;Yes => process command
csne lmpRxDLSAP, #lmpLSAPComm ;DLSAP addressing Comm ?
jmp :Comm ;Yes => accept
mov w, lmpRxBadLSAPState ;If not server then Bad LSAP
test lmpRxDLSAP ;0 = IAS Server
snz ;Addressing IAS Server ?
mov w, #lmpRxIASCmdState ;Yes => IAS Server state
mov lmpRxState, w ;Apply state
retp
:Cmd mov lmpRxState, #lmpRxLMPCmdOpcodeState ;No => change to RxCmdOpcodeState
clrb lmpRxDLSAP.7 ;Ensure MSB is clear
retp
:Comm mov w, #lmpRxCommDataState ;Comm data
test lmpAppLSAP ;Connected ?
snz
mov w, lmpRxBadLSAPState ;No => error
mov lmpRxState, w ;Apply state
retp
;********** lap2lmpRxData - RxCmdOpcodeState **********
lmpRxCmdOpcodeByte
mov lmpRxLMPCmdOpcode, lmpData ;Store data in opcode variable
mov lmpRxState, #lmpRxLMPCmdVerifyState ;Wait for Valid message
retp
;********** lap2lmpRxData - RxIASCmdState **********
lmpRxIASCmd
mov w, lmpData ;IAS Service request
and w, #%10111111 ;Mask out ack bit
mov lmpRxIASErrOpcode, w ;Store Service Request in case of error
xor w, #$84 ;Is the service request GetValueByClass ?
jnz :Err ;No => must reply with service unsupported
inc lmpRxState ;Yes => wait for class name length
retp
:Err mov lmpRxState, #lmpRxIASErrorState ;Will reply with Unsupported
mov lmpRxIASErrRetCode, #$FF ;Reply = $FF = unsupported service
retp
;********** lap2lmpRxData - RxIASClassLengthState **********
lmpRxIASClassLength ;Data = lnegth of class name
inc lmpRxState ;Next state = lmpRxIASClassTestState
mov lmpRxIASErrRetCode, #$01 ;If error then Reply = $01 = no such class
csne lmpData, #$06 ;Is the class name length 6 indicating that we should test for "Device" ?
jmp :Dev ;Yes => test for "Device"
csne lmpData, #$0B ;Is the class name length 11 indicating that we should test for "IrDA:IrCOMM" ?
jmp :Comm ;Yes => test for "IrDA:IrCOMM"
mov lmpRxState, #lmpRxIASErrorState ;No => Will reply with IAS error
retp
:Dev mov lmpRxPostTest, #lmpRxIASDeviceAttribState ;If class is correct then will cahnge to DeviceAttrib state
mov lmpPosition, #_lmpIASDeviceClass ;Pointer to string
retp
:Comm mov lmpRxPostTest, #lmpRxIASCommAttribState ;If class is correct then will cahnge to CommAttrib state
mov lmpPosition, #_lmpIASCommClass ;Pointer to string
retp
;********** lap2lmpRxData - RxIASDeviceAttribState **********
lmpRxIASDeviceAttrib
mov lmpRxState, #lmpRxIASAttribTestState ;Next will verify attrib string
mov lmpRxPostTest, #lmpRxIASAttribVerifyState ;If attrib is correct then will cahnge to AttribVerify state
mov lmpRxIASErrRetCode, #$02 ;If error then Reply = $02 = no such attribute
csne lmpData, #$0A ;Is the class name length 10 indicating that we should test for "DeviceName" ?
jmp :Name ;Yes => test for "Device"
csne lmpData, #12 ;Is the class name length 12 indicating that we should test for "IrLMPSupport" ?
jmp :Supp ;Yes => test for "IrLMPSupport"
mov lmpRxState, #lmpRxIASErrorState ;No => Will reply with IAS error
retp
:Name mov lmpRxSendStringL, #_lmpIASDeviceName ;Pointer to string to send in reply if attrib verifies
mov lmpPosition, #_lmpIASDeviceAttribName ;Pointer to string to test
retp
:Supp mov lmpRxSendStringL, #_lmpIASDeviceSupport ;Pointer to string to send in reply if attrib verifies
mov lmpPosition, #_lmpIASDeviceAttribSupport ;Pointer to string to test
retp
;********** lap2lmpRxData - RxIASCommAttribState **********
lmpRxIASCommAttrib
mov lmpRxState, #lmpRxIASAttribTestState ;Next will verify attrib string
mov lmpRxPostTest, #lmpRxIASAttribVerifyState ;If attrib is correct then will cahnge to AttribVerify state
mov lmpRxIASErrRetCode, #$02 ;If error then Reply = $02 = no such attribute
csne lmpData, #$0A ;Is the class name length 10 indicating that we should test for "Parameters" ?
jmp :Param ;Yes => test for "Parameters"
csne lmpData, #$12 ;Is the class name length 18 indicating that we should test for "IrDA:IrLMP:LsapSel" ?
jmp :Lsap ;Yes => test for "IrDA:IrLMP:LsapSel"
mov lmpRxState, #lmpRxIASErrorState ;No => Will reply with IAS error
retp
:Param mov lmpRxSendStringL, #_lmpIASCommParam ;Pointer to string to send in reply if attrib verifies
mov lmpPosition, #_lmpIASCommAttribParam ;Pointer to string to test
retp
:Lsap mov lmpRxSendStringL, #_lmpIASCommLsapSel ;Pointer to string to send in reply if attrib verifies
mov lmpPosition, #_lmpIASCommAttribLsapSel ;Pointer to string to test
retp
;********** lap2lmpRxData - RxIASStringTestState **********
lmpRxIASStringTest
mov m, #_lmpRxStringSegment / 256 ;String Segment (high)
mov w, lmpPosition ;Pointer to string (low)
inc lmpPosition ;Increment offset for next byte
iread ;Get data byte (in w)
xor w, lmpData ;Is the received data byte correct ?
jnz :Err ;No => error
mov w, m ;Yes => continue. Move high part of data to w
test w ;Is this the last byte ? (m is not 0)
snz
retp ;No => stay in this state
mov lmpRxState, lmpRxPostTest ;Yes => Change to next state
retp
:Err mov lmpRxState, #lmpRxIASErrorState ;Will reply with Error code
retp
;********** lap2lmpRxData - RxCommDataState **********
lmpRxCommData
setb lmpAppRxFlag ;remember passing data
mov w, lmpData ;Data to pass
jmp @lmp2appRxCommData ;Pass data to app layer
;********************************************************************************
;********** lap2lmpRxValid - RxBadLSAPState **********
lmpRxBadLSAP ;Should disconnect connection !!!
jmp @lmp2lapDisconnectRequest
;********** lap2lmpRxValid - RxLMPCmdVerifyState **********
lmpRxValidLMPCommand
csne lmpRxLMPCmdOpcode, #lmpConnectCmdOpcode ;Is this a request to open a connection ?
jmp :Conn ;Yes => accept
csne lmpRxLMPCmdOpcode, #lmpDisconnectOpcode ;Is this a request to clsoe a connection ?
jmp :Disc ;Yes => close
retp ;No => Unknown or unsupported command => ignore
:Conn mov lmpTxStringH, #_lmpLMPConnRsp / 256 ;Pointer to string
mov lmpTxStringL, #_lmpLMPConnRsp ;Pointer to string
mov lmpTxState, #lmpTxStringState ;Prepare to transmit parameters
setb lmpRxSLSAP.7 ;Indicate command (this will be the DLSAP byte when transmitted)
cse lmpRxDLSAP, #lmpLSAPComm ;DLSAP addressing Comm ?
jmp lmpRx2TxSetup ;No => nothing more to do other than to prepare to send reply
mov lmpAppLSAP, lmpRxSLSAP ;Yes => Store Source LSAP in AppLSAP (ie remember the remote Comm App LSAP)
clrb lmpAppLSAP.7 ;Set to information frame
jmp lmpRx2TxSetup ;prepare to send reply
:Disc csne lmpRxDLSAP, #lmpLSAPComm ;DLSAP addressing Comm ?
clr lmpAppLSAP ;Yes => clear connection
retp
;********** lap2lmpRxValid - RxIASAttribVerifyState **********
lmpRxValidIASAttribVerify
mov lmpTxStringH, #_lmpTxStringSegment / 256 ;Pointer to string
mov lmpTxStringL, lmpRxSendStringL ;Pointer to string
mov lmpTxState, #lmpTxStringState ;Prepare to transmit parameters
jmp lmpRx2TxSetup ;Prepare to transmit frame
;********** lap2lmpRxValid - RxIASErrorState **********
lmpRxValidIASError
mov lmpTxState, #lmpTxIASErrorState ;Prepare to transmit error return code
mov lmpTxIASErrOpcode, lmpRxIASErrOpcode
mov lmpTxIASErrRetCode, lmpRxIASErrRetCode
jmp lmpRx2TxSetup ;Prepare to transmit frame
;********** lap2lmpRxValid - RxCommDataState **********
lmpRxValidCommData
clr lmpRxState ;Clear RxState back to idle
clrb lmpAppRxFlag
jmp @lmp2appRxCommValid
;********************************************************************************
; LMP LAYER - Tx
;********************************************************************************
;********** lap2lmpTxData - TxStringState **********
lmpTxString
mov m, lmpTxStringH ;Pointer to string (high)
mov w, lmpTxStringL ;Pointer to string (low)
add w, lmpPosition ;Add offset
inc lmpPosition ;Increment offset for next byte
iread
mov Temp, w ;Store data
mov w, m ;Move high part of data to w
test w ;Is this the last byte ?
jnz :Last ;Yes
mov w, Temp ;Data to pass
clz ;Indicate more data to follow Data
retp ;Return data to framing layer
:Last mov w, Temp ;Data to pass
stz ;Indicate last byte
retp ;Return data to framing layer
;********** lap2lmpTxData - TxIASErrorState **********
lmpTxIASError
test lmpPosition
jnz :ErrCod
:Opcode mov w, lmpTxIASErrOpcode ;Opcode that was received
inc lmpPosition ;Next will send RetCode
clz ;Indicate more data to follow
retp
:ErrCod mov w, lmpTxIASErrRetCode ;RetCode
stz ;Indicate last byte
retp
;********** lap2lmpTxData - TxCommDataState **********
lmpTxCommData
setb lmpAppTxFlag ;remember receiving data
call @lmp2appTxCommData ;Get next data byte
bank lmpBank
snz ;Skip if not last byte
retp ;Z = 0 indicating last byte
dec lmpPosition ;Byte counter
retp ;Returns Z = true if counter = 0 ie when counter reaches 0 last flag will be set
;********************************************************************************
ENDM
LmpRxStringSeg MACRO
;********************************************************************************
; LMP LAYER - Strings ;WARNING - Strings must not go over a 256 boundry !!!
;********************************************************************************
_lmpRxStringSegment ;Rx strings must all be in the same segement !!!
_lmpIASDeviceClass dw 'Device'+$F00 ;Classname = "Device" ($F00 indicates end)
_lmpIASDeviceAttribName dw 'DeviceName'+$F00 ;Device Attribute: "DeviceName" ($F00 indicates end)
_lmpIASDeviceAttribSupport dw 'IrLMPSupport'+$F00 ;Device Attribute: "IrLMPSupporte" ($F00 indicates end)
_lmpIASCommClass dw 'IrDA:IrCOMM'+$F00 ;Classname = "IrDA:IrCOMM" ($F00 indicates end)
_lmpIASCommAttribParam dw 'Parameters'+$F00 ;IrCOMM Attribute: "Parameters" ($F00 indicates end)
_lmpIASCommAttribLsapSel dw 'IrDA:IrLMP:LsapSel'+$F00 ;IrCOMM Attribute: "LsapSel" ($F00 indicates end)
;********************************************************************************
ENDM
LmpTxStringSeg MACRO
;********************************************************************************
; LMP LAYER - String ;WARNING - Strings must not go over a 256 boundry !!!
;********************************************************************************
_lmpTxStringSegment ;Tx strings must all be in the same segement !!!
_lmpLMPConnRsp dw lmpConnectRspOpcode, $00+$F00
_lmpIASDeviceName dw $84, $00 ;$84 = Reply to GetValueByClass, $00 = success
_lmpIASDeviceName1 dw $00, $01 ;List length = 1 item
_lmpIASDeviceName2 dw $00, $00 ;Object identifier = 0
_lmpIASDeviceName3 dw $03, $00 ;Data is of type "User string", ASCII
_lmpIASDeviceName4 dw 28 ;length of text = 28 octets
_lmpIASDeviceNameText dw 'SX IrDA IrComm Demonstration'+$F00 ;String to be displayed
_lmpIASDeviceSupport dw $84, $00 ;$84 = Reply to GetValueByClass, $00 = success
_lmpIASDeviceSupport1 dw $00, $01 ;List length = 1 item
_lmpIASDeviceSupport2 dw $00, $00 ;Object identifier = 0
_lmpIASDeviceSupport3 dw $02 ;Data is of type "Octet Sequence"
_lmpIASDeviceSupport4 dw $00, $03 ;Data is 3 bytes in length
_lmpIASDeviceSupport5 dw $01 ;Data : IrLMP Version = 1 (refer LMP p 84)
_lmpIASDeviceSupport6 dw $00 ;Data : IAS Support = no additional features (refer LMP p 84)
_lmpIASDeviceSupport7 dw $00+$F00 ;Data : MUX Support = no additional features (refer LMP p 85) ($F00 indicates end)
_lmpIASCommParam dw $84, $00 ;$84 = Reply to GetValueByClass, $00 = success
_lmpIASCommParam1 dw $00, $01 ;List length = 1 item
_lmpIASCommParam2 dw $00, $00 ;Object identifier = 0
_lmpIASCommParam3 dw $02 ;Data is of type "Octet Sequence"
_lmpIASCommParam4 dw $00, $06 ;Data is 6 bytes in length
_lmpIASCommParam5 dw $00, 1, %00000001 ;Data : Service types = 3 wire raw
_lmpIASCommParam6 dw $01, 1, %00000011+$F00 ;Data : Port type = serial or parallel ($F00 indicates end)
_lmpIASCommLsapSel dw $84, $00 ;$84 = Reply to GetValueByClass, $00 = success
_lmpIASCommLsapSel1 dw $00, $01 ;List length = 1 item
_lmpIASCommLsapSel2 dw $00, $00 ;Object identifier = 0
_lmpIASCommLsapSel3 dw $01 ;Data is of type "Integer"
_lmpIASCommLsapSel4 dw $00, $00, $00, lmpLSAPComm+$F00 ;LsapSel = 5 ($F00 indicates end)
;********************************************************************************
ENDM
file: /Techref/scenix/lib/io/osi2/ir/da/lmp.src, 21KB, , updated: 1999/8/20 18:48, local time: 2024/11/19 23:14,
|
| ©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://linistepper.com/Techref/scenix/lib/io/osi2/ir/da/lmp.src"> scenix lib io osi2 ir da lmp</A> |
Did you find what you needed?
|