TITLE 'MDBS/PLI CALL INTERFACE PROGRAM'
;PROGRAM
; MDBS/PLI CALL INTERFACE PROGRAM
;PROGRAMMER
; ROBERT M. WHITE
;DATE WRITTEN
; JULY 21, 1980
;(C)COPYRIGHT 1980,H & W COMPUTER SYSTEMS, INC.
;PURPOSE
; THIS ROUTINE PERFORMS THE FUNCTION OF INTERFACING MDBS WITH
; THE PL/1 PROGRAM. IT IS A LINKABLE MODULE THAT EXPECTS THE
; MDBS NUCLEUS TO START AT 8003H IN MEMORY.
;REMARKS
MACLIB MACRO
DFCB EQU 005CH ;DEFAULT FCB
; DO INITIALIZATION.
NAME 'MDBSCL'
MDBSCL: CSEG
PUBLIC MDBSCL
; GET THE FUNCTION CODE.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
XCHG ;GET FUNCTION CODE.
MOV A,M
STA FUNC
XCHG
; GET THE BC PARM.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
XCHG ;SAVE THE PARM.
SHLD BCPARM
XCHG
; GET THE DE PARM.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
XCHG ;SAVE THE PARM.
SHLD DEPARM
XCHG
; GET THE HL PARM.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
XCHG ;SAVE THE PARM.
SHLD HLPARM
XCHG
; GET THE RETURN CODE PTR.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
XCHG ;SAVE IT.
SHLD RTNCDP
XCHG
; GET THE RECORD PTR.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
PUSH H
XCHG ;GET VALUE OF PTR.
MOV E,M
INX H
MOV D,M
XCHG ;SAVE RECORD PTR.
SHLD RCDPTR
POP H ;RESTORE PARM PTR.
; GET THE RECORD LENGTH.
MOV E,M ;GET ADDR OF IT.
INX H
MOV D,M
INX H
PUSH H
XCHG ;GET THE LENGTH.
MOV E,M
INX H
MOV D,M
XCHG ;SAVE IT.
SHLD RCDLEN
POP H ;RESTORE PARM PTR.
; CALL MDBS WITH PARM.
LHLD BCPARM ;LOAD BC PARM.
MOV B,H
MOV C,L
LHLD DEPARM ;LOAD DE PARM.
MOV D,H
MOV E,L
LHLD HLPARM ;LOAD HL PARM.
LDA FUNC ;GET FUNCTION CODE.
; CALL MDBS.
PUSH H ;SAVE CURRENT HL.
LXI H,RETRN ;SET RETURN ADDRESS.
XTHL
PUSH H ;SAVE CURRENT HL AGAIN.
LHLD 6 ;CALCULATE ADDRESS OF MDBS.
INX H
INX H
INX H
XTHL ;SET THE ENTRY ADDRESS.
RET ;CALL MDBS.
RETRN DS 0
; SAVE RETURN PARAMETERS AND RETURN CODE.
STA RETCOD ;SAVE RETURN CODE.
SHLD HLRPRM ;SAVE HL RETURN PARM.
MOV H,D ;SAVE DE RETURN PARM.
MOV L,E
SHLD DERPRM
MOV H,B ;SAVE BC RETURN PARM.
MOV L,C
SHLD BCRPRM
; IF ZERO RETURN CODE AND GET FUNC, MOVE RECORD.
ORA A ;ZERO RETURN CODE?
JNZ MOVBYP ;...NO.
LDA FUNC ;CHECK FOR GET FUNCTION CODE.
CPI 24 ;LOW?
JC MOVBYP ;...YES.
CPI 36+1 ;HIGH?
JNC MOVBYP ;...YES.
CPI 32 ;GMC?
JZ MOVBYP ;...YES.
CPI 33 ;GOC?
JZ MOVBYP ;...YES.
LHLD RCDLEN ;BC=RECORD LENGTH
MOV B,H
MOV C,L
LHLD RCDPTR ;DE => RECORD AREA
XCHG
LHLD HLRPRM ;HL => RECORD IN BUFFER
MOVE ;MOVE THE RECORD FROM THE BUFFER.
MOVBYP:
; RETURN TO CALLER.
LHLD RTNCDP ;SET RETURN CODE.
LDA RETCOD
MOV M,A
RET ;RETURN TO CALLER.
PAGE
;****************************************************************
;* PROGRAM CONSTANTS *
;****************************************************************