home *** CD-ROM | disk | FTP | other *** search
-
- PUBLIC PORT_IN,PORT_OUT,GET_RAND ; FAR Routinen
-
- PortIOCode segment para 'CODE'
-
- assume cs:PortIOCode,ds:nothing,es:nothing,ss:nothing
-
-
- ; die Routinen sind als FAR Routinen implementiert, da sie
- ; moeglicherweise vom Benutzer veraendert werden koennen. Dabei
- ; soll er aber moeglichst nichts von der inneren Struktur der anderen
- ; Module mitbekommen, so auch keine Segmentnamen
-
- ; !
- ; es durfen keine Register zerstoert werden !
- ; !
-
- DummyOps equ 1
-
- ;
- ; AL:=port(DX)
- ;
-
- PORT_IN proc far
-
- if DummyOps
-
- mov al,0ffh ; alles auf high
- else
- in al,dx ; wenn nicht dummy
- endif
-
- ret
- PORT_IN endp
-
- ;
- ; port(DX):=AL
- ;
-
- PORT_OUT proc far
-
- if DummyOps
- nop
- else
- out dx,al ; wenn nicht dummy
- endif
- ret
- PORT_OUT endp
-
- ;
- ; AL:= "Zufallszahl" x, 0<=x<=127
- ;
- GET_RAND proc far
- push cx
- push dx
- mov al,ah
- mov ah,2ch ; MsDos Get Time
- int 21h
- mov ah,al
- mov al,ch
- xor al,cl
- xor al,dh
- xor al,dl
- and al,7fh
- pop dx
- pop cx
- ret
- GET_RAND endp
-
- PortIOCode ends
-
- end