home *** CD-ROM | disk | FTP | other *** search
- 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.
-
- ; IF SELECTED FUNC, PUT RECORD AS HL PARM.
- LDA FUNC ;GET FUNCTION CODE.
- CPI 07 ;CRS?
- JZ USERCD ;...YES.
- CPI 14 ;FINDM?
- JZ USERCD ;...YES.
- CPI 15 ;FINDO?
- JZ USERCD ;...YES.
- CPI 18 ;FMSK?
- JZ USERCD ;...YES.
- CPI 21 ;FOSK?
- JZ USERCD ;...YES.
- CPI 38 ;PUTC?
- JZ USERCD ;...YES.
- CPI 39 ;PUTM?
- JZ USERCD ;...YES.
- CPI 40 ;PUTO?
- JZ USERCD ;...YES.
- CPI 41 ;PUTR?
- JZ USERCD ;...YES.
- CPI 47 ;SFC?
- JZ USERCD ;...YES.
- CPI 48 ;SFM?
- JZ USERCD ;...YES.
- CPI 49 ;SFO?
- JZ USERCD ;...YES.
- CPI 50 ;SFR?
- JZ USERCD ;...YES.
- JMP BYPRCD ;...NO, DON'T USE RECORD.
- USERCD:
- LHLD RCDPTR ;GET RECORD PTR.
- SHLD HLPARM ;PUT IT IN HL PARM.
- BYPRCD:
-
- ; 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 *
- ;****************************************************************
-
- ; INPUT PARM.
- MDBSCD: DSEG
- FUNC: DB 0 ;FUNCTION CODE
- BCPARM: DW 0 ;BC PARM
- DEPARM: DW 0 ;DE PARM
- HLPARM: DW 0 ;HL PARM
- RTNCDP: DW 0 ;RETURN CODE PTR
- RCDPTR: DW 0 ;RECORD PTR
- RCDLEN: DW 0 ;RECORD LENGTH
-
- ; RETURN PARMS.
- RETCOD: DB 0 ;RECORD CODE.
- BCRPRM: DW 0 ;BC PARM
- DERPRM: DW 0 ;DE PARM
- HLRPRM: DW 0 ;HL PARM
-
- END
-