home *** CD-ROM | disk | FTP | other *** search
/ Scene Xplorer 1 / Scene_Xplorer_1.iso / Tools / ProNet / source / devio.s < prev    next >
Text File  |  1978-01-11  |  1KB  |  96 lines

  1. ;: > devio.s
  2. ;:
  3. ;: Routines for opening and communicating with devices
  4.  
  5. ;: You should only call these routines::
  6. ;:
  7. ;: GetIORequest - Call with Size of IOReq in d0
  8. ;: FreeIORequest - Call with *IOReq in a0 !
  9.  
  10.         include    "A:ProNET/source/devio_ports.s"
  11.  
  12. *
  13. *    CreateIOReq
  14. *
  15. * a0 *ReplyPort
  16. * d0 Size
  17. *
  18. * RETURNS d0 *IORequest or NULL
  19. *
  20.  
  21. CreateIOReq    movem.l    d3/a3,-(sp)
  22.  
  23.         move.l    d0,d3
  24.         move.l    a0,a3
  25.  
  26.         move.l    #MEMF_CLEAR^MEMF_PUBLIC,d1
  27.         LIBCALL    AllocMem
  28.         move.l    d0,a0
  29.         tst.l    d0
  30.         beq.s    .ende
  31.  
  32.         move.l    a3,14(a0)
  33.         move.w    d3,18(a0)
  34.  
  35. .ende        movem.l    (sp)+,d3/a3
  36.         rts
  37.  
  38. *
  39. *    DeleteIOReq
  40. *
  41. * a0 *IORequest
  42. *
  43.  
  44. DeleteIOReq    moveq    #0,d0
  45.         move.w    18(a0),d0
  46.         move.l    a0,a1
  47.         LIBCALL    FreeMem
  48.         rts
  49.  
  50. *
  51. *    GetIORequest
  52. *
  53. * d0 Size of IORequest
  54. *
  55. * RETURNS d0 *IORequest or NULL
  56. *
  57.  
  58. GetIORequest    movem.l    d2-d6/a2-a6,-(sp)
  59.         move.l    4.w,a6
  60.         move.l    d0,d2
  61.  
  62.         bsr    CreatePort
  63.         move.l    d0,a0
  64.         tst.l    d0
  65.         beq.s    .ende
  66.  
  67.         move.l    a0,a3
  68.         move.l    d2,d0
  69.         bsr.s    CreateIOReq
  70.         tst.l    d0
  71.         beq.s    ferr1
  72.  
  73. .ende        movem.l    (sp)+,d2-d6/a2-a6
  74.         rts
  75.  
  76. *
  77. *    FreeIORequest
  78. *
  79. * a0 *IORequest
  80. *
  81.  
  82. FreeIORequest    movem.l    d2-d6/a2-a6,-(sp)
  83.         move.l    4.w,a6
  84.         move.l    a0,a3
  85.  
  86.         move.l    a3,a0
  87.         move.l    14(a0),a3
  88.         bsr.s    DeleteIOReq
  89.  
  90. ferr1        move.l    a3,a0
  91.         bsr    DeletePort
  92.  
  93. dioferr        movem.l    (sp)+,d2-d6/a2-a6
  94.         moveq    #0,d0
  95.         rts
  96.