home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols200 / vol217 / quein.a86 < prev    next >
Text File  |  1994-07-13  |  3KB  |  130 lines

  1. title 'Create MXconsN Queues'
  2.  
  3.  
  4. ;-------------------------------------------------------------------
  5. ;QUEIN.A86
  6. ;
  7. ;        MXconsN     queues for MC-DOS
  8. ; Routine to create the queues MXconsN (N = Console number)
  9. ;
  10. ; The MXconsN queues may then be used by application programs that
  11. ; require a console port for direct I/O.
  12.  
  13. ;
  14. ; QUEIN.CMD should be called from the SYSINIT.SUB file on A0 allowing
  15. ;        the queues to be created during start up.
  16. ;
  17. ;
  18. ;                        11/24/84  Alex Soya
  19. ;-------------------------------------------------------------------
  20. ;
  21. ;
  22. ;
  23. ;MC-DOS function calls:
  24. ;
  25. P_TERMCPM    EQU    0    ; Terminate program
  26. C_WRITESTR    EQU    9    ; Print Ascii string to default console
  27. Q_MAKE        EQU   134    ; Create a system queue.
  28. Q_OPEN        EQU   135    ; Open a system queue
  29. Q_WRITE        EQU   139    ; Write a message to system queue
  30.  
  31.  
  32. ;Some equates:
  33. ;
  34. cr        equ    0dh
  35. lf        equ    0ah
  36. MAXCON        equ    2    ; Max Console number (1 - 9)
  37.                 ; to be used for direct port I/O
  38.                 ; MXcon0 will not be created as this
  39.                 ; is the Systems Console and should not
  40.                 ; be used for anything other than the
  41.                 ; console.
  42. ;
  43.  
  44.  
  45.         CSEG        ; Using Small model
  46.  
  47.  
  48. start:    mov    SP, offset STACK
  49.     mov    AX,DS
  50.     mov    SS,AX
  51.     
  52.     mov    cx,MAXCON    ; Ques are created from MAXCON down
  53. quelp:    push    cx        ; save current count
  54.     mov    ax,cx
  55.     add    al,'0'        ; Make que number ascii
  56.     mov    qdname+6,al    ; Make que name
  57.     mov    qpname+6,al
  58.     mov    msname+6,al
  59.     mov    Word ptr qd,0    ; fill the crap
  60.     mov    Word ptr qd+2,0
  61.     mov    Word ptr qd+22,0
  62.     mov    Word ptr qd+24,0
  63.     mov    Word ptr qd+26,0
  64.     mov    Word ptr buffer, Offset msgbuf
  65.     mov    Word ptr flags,1 ; this is a MX que
  66.     mov    Word ptr msglen,0
  67.     mov    Word ptr nmsgs,1
  68.     mov    dx, offset qd    ; get que descriptor offset
  69.     mov    cl, Q_MAKE    ; make that que
  70.     call    bdos
  71.  
  72.     mov    Word ptr qpb,0    ; now fill in the crap in the QPB
  73.     mov    word ptr qpb+4,0
  74.     mov    word ptr qpbuf, offset msgbuf
  75.     mov    dx, offset qpb
  76.     mov    cl, Q_OPEN    ; open the que
  77.     call    bdos
  78.     mov    cl, Q_WRITE    ; and write to the que
  79.     call    bdos
  80.     mov    cl, C_WRITESTR    ; Tell operator which que was created
  81.     mov    dx, offset msg
  82.     call    bdos
  83.     pop    cx
  84.     loop    quelp        ; and do the next one
  85.  
  86.     mov    cl,P_TERMCPM    ; and terminate
  87.     int    224
  88.  
  89.  
  90. bdos:    push    cx
  91.     push    dx
  92.     int    224
  93.     pop    dx
  94.     pop    cx
  95.     ret
  96.  
  97.  
  98.     DSEG
  99.  
  100.     ORG    100h
  101.  
  102.  
  103. qd    dw    0        ; Que descriptor
  104.     dw    0
  105. flags    dw    1        ; its an MX que
  106. qdname    db    'MXcons  '    ; My name is MXcons
  107. msglen    dw    0        ; message is 0 long
  108. nmsgs    dw    1        ; 1 message at a time
  109.     dw    0
  110.     dw    0
  111.     dw    0
  112. buffer    dw    offset msgbuf
  113.  
  114.  
  115. qpb    dw    0        ; Que parameter block
  116. qpid    dw    0        ; ID field
  117.     dw    0
  118. qpbuf    dw    offset msgbuf
  119. qpname    db    'MXcons  '
  120.  
  121.  
  122. msgbuf    dw    0
  123.  
  124. msg    db    'Console exclusion queue: '
  125. msname    db    'MXcons  - created',cr,lf,'$'
  126.  
  127.     rw    36
  128. stack    rw    0        ; here is our local stack
  129.  
  130.