home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol049 / mdbscl.asm < prev    next >
Assembly Source File  |  1984-04-29  |  4KB  |  213 lines

  1.     TITLE    'MDBS/PLI CALL INTERFACE PROGRAM'
  2. ;PROGRAM
  3. ;        MDBS/PLI CALL INTERFACE PROGRAM
  4. ;PROGRAMMER
  5. ;        ROBERT M. WHITE
  6. ;DATE WRITTEN
  7. ;        JULY 21, 1980
  8. ;(C)COPYRIGHT    1980,H & W COMPUTER SYSTEMS, INC.
  9. ;PURPOSE
  10. ;        THIS ROUTINE PERFORMS THE FUNCTION OF INTERFACING MDBS WITH
  11. ;        THE PL/1 PROGRAM.  IT IS A LINKABLE MODULE THAT EXPECTS THE
  12. ;        MDBS NUCLEUS TO START AT 8003H IN MEMORY.
  13. ;REMARKS
  14.  
  15.  
  16.     MACLIB    MACRO
  17. DFCB    EQU    005CH        ;DEFAULT FCB
  18.  
  19. ;        DO INITIALIZATION.
  20.     NAME    'MDBSCL'
  21. MDBSCL:    CSEG
  22.     PUBLIC    MDBSCL
  23.  
  24. ;        GET THE FUNCTION CODE.
  25.     MOV    E,M        ;GET ADDR OF IT.
  26.     INX    H
  27.     MOV    D,M
  28.     INX    H
  29.     XCHG            ;GET FUNCTION CODE.
  30.     MOV    A,M
  31.     STA    FUNC
  32.     XCHG
  33.  
  34. ;        GET THE BC PARM.
  35.     MOV    E,M        ;GET ADDR OF IT.
  36.     INX    H
  37.     MOV    D,M
  38.     INX    H
  39.     XCHG            ;SAVE THE PARM.
  40.     SHLD    BCPARM
  41.     XCHG
  42.  
  43. ;        GET THE DE PARM.
  44.     MOV    E,M        ;GET ADDR OF IT.
  45.     INX    H
  46.     MOV    D,M
  47.     INX    H
  48.     XCHG            ;SAVE THE PARM.
  49.     SHLD    DEPARM
  50.     XCHG
  51.  
  52. ;        GET THE HL PARM.
  53.     MOV    E,M        ;GET ADDR OF IT.
  54.     INX    H
  55.     MOV    D,M
  56.     INX    H
  57.     XCHG            ;SAVE THE PARM.
  58.     SHLD    HLPARM
  59.     XCHG
  60.  
  61. ;        GET THE RETURN CODE PTR.
  62.     MOV    E,M        ;GET ADDR OF IT.
  63.     INX    H
  64.     MOV    D,M
  65.     INX    H
  66.     XCHG            ;SAVE IT.
  67.     SHLD    RTNCDP
  68.     XCHG
  69.  
  70. ;        GET THE RECORD PTR.
  71.     MOV    E,M        ;GET ADDR OF IT.
  72.     INX    H
  73.     MOV    D,M
  74.     INX    H
  75.     PUSH    H
  76.     XCHG            ;GET VALUE OF PTR.
  77.     MOV    E,M
  78.     INX    H
  79.     MOV    D,M
  80.     XCHG            ;SAVE RECORD PTR.
  81.     SHLD    RCDPTR
  82.     POP    H        ;RESTORE PARM PTR.
  83.  
  84. ;        GET THE RECORD LENGTH.
  85.     MOV    E,M        ;GET ADDR OF IT.
  86.     INX    H
  87.     MOV    D,M
  88.     INX    H
  89.     PUSH    H
  90.     XCHG            ;GET THE LENGTH.
  91.     MOV    E,M
  92.     INX    H
  93.     MOV    D,M
  94.     XCHG            ;SAVE IT.
  95.     SHLD    RCDLEN
  96.     POP    H        ;RESTORE PARM PTR.
  97.  
  98. ;        IF SELECTED FUNC, PUT RECORD AS HL PARM.
  99.     LDA    FUNC        ;GET FUNCTION CODE.
  100.     CPI    07        ;CRS?
  101.     JZ    USERCD        ;...YES.
  102.     CPI    14        ;FINDM?
  103.     JZ    USERCD        ;...YES.
  104.     CPI    15        ;FINDO?
  105.     JZ    USERCD        ;...YES.
  106.     CPI    18        ;FMSK?
  107.     JZ    USERCD        ;...YES.
  108.     CPI    21        ;FOSK?
  109.     JZ    USERCD        ;...YES.
  110.     CPI    38        ;PUTC?
  111.     JZ    USERCD        ;...YES.
  112.     CPI    39        ;PUTM?
  113.     JZ    USERCD        ;...YES.
  114.     CPI    40        ;PUTO?
  115.     JZ    USERCD        ;...YES.
  116.     CPI    41        ;PUTR?
  117.     JZ    USERCD        ;...YES.
  118.     CPI    47        ;SFC?
  119.     JZ    USERCD        ;...YES.
  120.     CPI    48        ;SFM?
  121.     JZ    USERCD        ;...YES.
  122.     CPI    49        ;SFO?
  123.     JZ    USERCD        ;...YES.
  124.     CPI    50        ;SFR?
  125.     JZ    USERCD        ;...YES.
  126.     JMP    BYPRCD        ;...NO, DON'T USE RECORD.
  127. USERCD:
  128.     LHLD    RCDPTR        ;GET RECORD PTR.
  129.     SHLD    HLPARM        ;PUT IT IN HL PARM.
  130. BYPRCD:
  131.  
  132. ;        CALL MDBS WITH PARM.
  133.     LHLD    BCPARM        ;LOAD BC PARM.
  134.     MOV    B,H
  135.     MOV    C,L
  136.     LHLD    DEPARM        ;LOAD DE PARM.
  137.     MOV    D,H
  138.     MOV    E,L
  139.     LHLD    HLPARM        ;LOAD HL PARM.
  140.     LDA    FUNC        ;GET FUNCTION CODE.
  141.  
  142. ;        CALL MDBS.
  143.     PUSH    H        ;SAVE CURRENT HL.
  144.     LXI    H,RETRN        ;SET RETURN ADDRESS.
  145.     XTHL
  146.     PUSH    H        ;SAVE CURRENT HL AGAIN.
  147.     LHLD    6        ;CALCULATE ADDRESS OF MDBS.
  148.     INX    H
  149.     INX    H
  150.     INX    H
  151.     XTHL            ;SET THE ENTRY ADDRESS.
  152.     RET            ;CALL MDBS.
  153. RETRN      DS    0
  154.  
  155. ;        SAVE RETURN PARAMETERS AND RETURN CODE.
  156.     STA    RETCOD        ;SAVE RETURN CODE.
  157.     SHLD    HLRPRM        ;SAVE HL RETURN PARM.
  158.     MOV    H,D        ;SAVE DE RETURN PARM.
  159.     MOV    L,E
  160.     SHLD    DERPRM
  161.     MOV    H,B        ;SAVE BC RETURN PARM.
  162.     MOV    L,C
  163.     SHLD    BCRPRM
  164.  
  165. ;        IF ZERO RETURN CODE AND GET FUNC, MOVE RECORD.
  166.     ORA    A        ;ZERO RETURN CODE?
  167.     JNZ    MOVBYP        ;...NO.
  168.     LDA    FUNC        ;CHECK FOR GET FUNCTION CODE.
  169.     CPI    24        ;LOW?
  170.     JC    MOVBYP        ;...YES.
  171.     CPI    36+1        ;HIGH?
  172.     JNC    MOVBYP        ;...YES.
  173.     CPI    32        ;GMC?
  174.     JZ    MOVBYP        ;...YES.
  175.     CPI    33        ;GOC?
  176.     JZ    MOVBYP        ;...YES.
  177.     LHLD    RCDLEN        ;BC=RECORD LENGTH
  178.     MOV    B,H
  179.     MOV    C,L
  180.     LHLD    RCDPTR        ;DE => RECORD AREA
  181.     XCHG
  182.     LHLD    HLRPRM        ;HL => RECORD IN BUFFER
  183.     MOVE            ;MOVE THE RECORD FROM THE BUFFER.
  184. MOVBYP:
  185.  
  186. ;        RETURN TO CALLER.
  187.     LHLD    RTNCDP        ;SET RETURN CODE.
  188.     LDA    RETCOD
  189.     MOV    M,A
  190.     RET            ;RETURN TO CALLER.
  191.     PAGE
  192. ;****************************************************************
  193. ;*            PROGRAM CONSTANTS            *
  194. ;****************************************************************
  195.  
  196. ;        INPUT PARM.
  197. MDBSCD:    DSEG
  198. FUNC:    DB    0        ;FUNCTION CODE
  199. BCPARM: DW    0        ;BC PARM
  200. DEPARM:    DW    0        ;DE PARM
  201. HLPARM:    DW    0        ;HL PARM
  202. RTNCDP:    DW    0        ;RETURN CODE PTR
  203. RCDPTR:    DW    0        ;RECORD PTR
  204. RCDLEN:    DW    0        ;RECORD LENGTH
  205.  
  206. ;        RETURN PARMS.
  207. RETCOD:    DB    0        ;RECORD CODE.
  208. BCRPRM:    DW    0        ;BC PARM
  209. DERPRM:    DW    0        ;DE PARM
  210. HLRPRM:    DW    0        ;HL PARM
  211.  
  212.     END
  213.