home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / Assembly / JGNEResource.a < prev    next >
Encoding:
Text File  |  1995-07-27  |  2.1 KB  |  141 lines  |  [TEXT/MPS ]

  1.     include    'sysequ.a'
  2.     include    'traps.a'
  3.     proc    
  4.  
  5. send_max    equ    2000
  6.  
  7. csJGNEinit    equ    1
  8. csJGNEfinish    equ    2
  9.  
  10. PBcsCode    equ    0    ; longInt
  11. PBhandleJGNE    equ    4    ; UPP
  12. ; procedure HandleJGNE(var er:EventRecord; refcon:longInt);
  13. PBrefcon    equ    8    ; longInt
  14. PBisopenaddr    equ    12    ; BooleanPtr
  15. PBneednulladdr    equ    16    ; BooleanPtr
  16.  
  17. ; procedure JGNEResource(var pb:ParamBlock);
  18. main
  19.     movem.l    a0-a2/d0-d2,-(sp)
  20.     move.l    28(sp),a0
  21.     move.l    PBcsCode(a0),d0
  22.     cmpi.l    #csJGNEinit,d0
  23.     beq.s    init
  24.     cmpi.l    #csJGNEfinish,d0
  25.     beq.s    finish
  26.     bra.s    return
  27.  
  28. init
  29.     lea    data,a1
  30.     move.l    PBhandleJGNE(a0),(a1)+
  31.     move.l    JGNEFilter,(a1)+
  32.     move.l    PBrefcon(a0),(a1)+
  33.     move.l    a5,(a1)+
  34.     clr.w    (a1)+            ; injgne
  35.     move.l    a1,PBisopenaddr(a0)
  36.     clr.w    (a1)+            ; isopen
  37.     move.l    a1,PBneednulladdr(a0)
  38.     clr.w    (a1)+            ; neednull
  39.     
  40.     move.l    #6,d0
  41.     _NewPtr    ,sys
  42.     lea    sysptr,a1
  43.     move.l    a0,(a1)
  44.  
  45.     move.w    #$4EF9,(a0)
  46.     lea    doJGNE,a1
  47.     move.l    a1,2(a0)    
  48.     lea    JGNEFilter,a1
  49.     move.l    a0,(a1)
  50.  
  51.     _FlushDataCache
  52.     _FlushInstructionCache
  53.     
  54.     bra.s    return
  55.  
  56. finish
  57.     move.l    sysptr,a0
  58.     move.l    oldaddr,a1
  59.     move.l    a1,2(a0)
  60.     _FlushDataCache
  61.     _FlushInstructionCache
  62.  
  63. ;    bra.s    return
  64.  
  65. return
  66.     movem.l    (sp)+,a0-a2/d0-d2
  67.     move.l    (sp)+,(sp)
  68.     rts
  69.     
  70. SPretval    equ    8+12
  71.  
  72. ; A1 = event register ptr.
  73. ; return A1 and D0.
  74. doJGNE
  75.     _Debugger
  76.     movem.l    d1/d2/a2,-(sp)
  77.     move.l    a1,-(sp)
  78.  
  79.     lea    injgne,a0
  80.     tst.w    (a0)
  81.     bne.s    notme
  82.  
  83.     move.w    #1,(a0)
  84.  
  85.     move.w    neednull,d0
  86.     bne.s    yup
  87.     move.w    (a1),d0
  88.     beq.s    nup
  89.     cmpi.w    #3,d0    ; keyDown
  90.     beq.s    yup
  91.     move.w    isopen,d0
  92.     beq.s    nup
  93. yup
  94.     move.l    a5,-(sp)
  95.     move.l    appa5,a5
  96.  
  97.     move.l    a1,-(sp)
  98.     move.l    refcon,-(sp)
  99.     move.l    newaddr,a0
  100.     jsr    (a0)
  101.  
  102.     move.l    (sp)+,a5
  103.     move.l    (sp),a1
  104. nup
  105.     clr.l    d0
  106.     move.w    (a1),d0
  107.     sne    d0
  108.     neg.b    d0
  109.     clr.w    SPretval(sp)
  110.     move.b    d0,SPretval(sp)
  111.     move.w    SPretval(sp),d0
  112.     
  113.     lea    injgne,a0
  114.     clr.w    (a0)
  115. notme
  116.     move.l    (sp)+,a1
  117.     movem.l    (sp)+,d1/d2/a2
  118.     move.l    oldaddr,a0
  119.     tst.w    d0
  120.     _Debugger
  121.     jmp    (a0)
  122.  
  123. data
  124. newaddr        ds.l    1
  125. oldaddr        ds.l    1
  126. refcon        ds.l    1
  127. appa5        ds.l    1
  128. injgne        ds.w    1
  129. isopen        ds.w    1
  130. neednull    ds.w    1
  131. sysptr        ds.l    1
  132.  
  133.     endp
  134.  
  135.     end
  136.     
  137. asm -wb "{active}"
  138. (evaluate "{active}" =~ /(?*):(?*)®1.a/ )> dev:null
  139. (evaluate "{active}" =~ "/(?*)®2.a/" )> dev:null
  140. link -t rsrc -c RSED -rt PROC=128 "{active}.o" -o "{®2}.rsrc"
  141.