home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / cyberdan / intrance / gus / detect.asm next >
Encoding:
Assembly Source File  |  1995-03-10  |  2.6 KB  |  118 lines

  1.  
  2. nogus   db      'No GUS?  No demo!',10,13,'$'
  3.  
  4. ; Carry set - No GUS
  5. ; No carry  - GUS at Base
  6. DetectGUS:
  7.         mov     cs:[Baseport],210h
  8. TestIt:
  9.         call    U_Probe
  10.         jnb     FoundIt
  11.         add     cs:[Baseport],10h
  12.         cmp     cs:[Baseport],270h
  13.         jb      TestIt
  14. FoundIt:
  15.         ret
  16.  
  17. UDelay:
  18.         push    dx ax
  19.         mov     dx,300h
  20.         in      al,dx
  21.         in      al,dx
  22.         in      al,dx
  23.         in      al,dx
  24.         in      al,dx
  25.         in      al,dx
  26.         in      al,dx
  27.         pop     ax dx
  28.         ret
  29.  
  30. ; BX:CX Set to whatever.
  31. U_Peek:
  32.         push    dx
  33.         mov     dx,cs:[BasePort]
  34.         add     dx,103h                 ; 103h
  35.         mov     al,43h
  36.         out     dx,al
  37.         inc     dx                      ; 104h
  38.         mov     ax,cx
  39.         out     dx,ax
  40.         dec     dx                      ; 103h
  41.         mov     al,44h
  42.         out     dx,al
  43.         add     dx,2
  44.         mov     al,bl
  45.         out     dx,al
  46.         add     dx,2
  47.         in      al,dx
  48.         pop     dx
  49.         ret
  50.  
  51. ; BX:CX Set to whatever.
  52. ; AX Value to poke
  53. U_Poke:
  54.         push    dx ax
  55.         mov     dx,cs:[BasePort]
  56.         add     dx,103h
  57.         mov     al,43h
  58.         out     dx,al
  59.         inc     dx
  60.         mov     ax,cx
  61.         out     dx,ax
  62.         dec     dx
  63.         mov     al,44h
  64.         out     dx,al
  65.         add     dx,2
  66.         mov     al,bl
  67.         out     dx,al
  68.         add     dx,2
  69.         pop     ax
  70.         out     dx,al
  71.         pop     dx
  72.         ret
  73.  
  74.  
  75. ; DX - Base.
  76. U_Probe:
  77.         mov     dx,cs:[BasePort]
  78.         add     dx,0103h                ; 103h
  79.         mov     al,4Ch
  80.         out     dx,al
  81.         add     dx,2                    ; 105h
  82.         mov     al,0
  83.         out     dx,al
  84.         call    UDelay
  85.         call    UDelay
  86.         sub     dx,2                    ; 103h
  87.         mov     al,4Ch
  88.         out     dx,al
  89.         add     dx,2                    ; 105h
  90.         mov     al,1
  91.         out     dx,al
  92.         mov     ax,0AAh
  93.         mov     bx,0
  94.         mov     cx,0
  95.         call    U_Poke
  96.         mov     ax,055h
  97.         mov     bx,1
  98.         call    U_Poke
  99.         mov     bx,0
  100.         call    U_Peek
  101.         push    ax
  102.         mov     ax,0
  103.         call    U_Poke
  104.         sub     dx,2                    ; 103h
  105.         mov     al,4Ch
  106.         out     dx,al
  107.         add     dx,2                    ; 105h
  108.         mov     al,0
  109.         out     dx,al
  110.         pop     ax
  111.         cmp     al,0AAh
  112.         jnz     @@Nope
  113.         clc
  114.         ret
  115. @@Nope: stc
  116.         ret
  117.  
  118.