Quoting Sander Smeenk to Ronald Schlegel:
SS> BNU Version 1.70...
SS> If you could help me, i'll be most thankfull.
Here are some routines for X00 that you might find helpful, Sander:
An X00 Fossil Driver-SUB to use Ray Gwinn's X00 >= Version 1.54 under Power
Basic.
sub X00initializedriver (X00PORT)
'X00 initialisieren
AX = &h1C00 :' Initialize driver
' Parameters:
' Entry: DX = port number
DX = x00port -1
reg 1, AX
reg 4, DX
call interrupt &h14
AX = reg(1)
if AX&H1954 then print "Fossil driver not found !":beep:end REM sound
1000,.5 rem sound 2000,1 end sub
sub X00deinitializedriver (X00PORT)
'X00 Deinitialisieren
AX = &h1d00:' Deinitialize driver
DX = X00PORT - 1
' Exit: None
reg 1, ax
reg 4, dx
call interrupt &h14
rem sound 2000,.5
rem sound 1000,2
end sub
sub X00baudrate (X00PORT,X00BAUD)
'X00 Baudrate setzen
Ah = &h1E :' Initialize driver setze baudrate ' Parameters: ' Entry: DX
= port number DX = x00port -1 al= 00 : rem kein Break = 00 - Break =
01 bh= 00 : rem 00 = no parity
rem 01 = ODD
rem 02 = EVEN
rem 03 = Mark
rem 04 = Space
bl= 00 : rem 00 = one stop bit
rem 01 = two stop bit
ch= 03 : rem 00 = 5 daten bit
rem 01 = 6
rem 02 = 7
rem 03 = 8
if x00baud=115200 then cl=&h84
if x00baud=57600 then cl=&h82
if x00baud=38400 then cl=&h81
if x00baud=28800 then cl=&h80
if x00baud=19200 then cl=&h08
if x00baud= 9600 then cl=&h07
if x00baud= 4800 then cl=&h06
if x00baud= 2400 then cl=&h05
if x00baud= 1200 then cl=&h04
if x00baud= 0 then cl=&hFF
ax=al+(ah*256)
bx=bl+(bh*256)
cx=cl+(ch*256)
reg 1, AX
reg 2, BX
reg 3, CX
call interrupt &h14
rem sound 1000,.5
rem sound 2000,.5
rem sound 3000,.5
end sub
sub X00CTSINIT (X00PORT,X00CTS)
'X00CTS/RTS XON/XOFF
AH = &h0f :' Initialize driver
' Parameters:
' Entry: DX = port number
DX = x00port -1
if x00cts=0 then al=&B11110100 :' alles aus if x00cts=1 then al=&B11110101
:' Xon/Xoff senden if x00cts=2 then al=&B11110110 :' CTS/RTS on if
x00cts=3 then al=&B11110111 :' Xon/Xoff senden + CTS/RTS if x00cts=4 then
al=&B11111100 :' Xon/Xoff empfang if x00cts=5 then al=&B11111101 :'
Xon/Xoff empfang + senden if x00cts=6 then al=&B11111110 :' Xon/Xoff
empfang + CTS/RTS if x00cts=7 then al=&B11111111 :' Xon/Xoff emfang +
senden + CTS/RTS
ax=256*ah+al
reg 1, ax
reg 4, DX
call interrupt &h14
end sub
sub X00watchdog (X00PORT,x00watch)
'X00 Watchdog steuern
AH = &h14 :' Initialize driver
' Parameters:
' Entry: DX = port number
DX = x00port -1
al=x00watch:' 0 = watchdog off
' 1 = watchdog on
ax=256*ah+al
reg 1, ax
reg 4, DX
call interrupt &h14
end sub
sub X00send (X00PORT,a$)
'X00 Datenstring senden
txit$=a$
txstart=1
maxtx=len(txit$)
AH = &h19 :' Initialize driver
do until txstart > maxtx
txnow$ = mid$(txit$,txstart)
offset = strptr(txnow$)
segment = strseg(txnow$)
ES=segment
DI=offset
cx=len(txnow$)
' Parameters:
' Entry: DX = port number
DX = x00port -1
al=0:' 0 = watchdog off
' 1 = watchdog on
ax=256*ah+al
reg 1, ax
reg 4, DX
reg 3, CX
reg 9, ES
reg 6, DI
call interrupt &h14
txstart = txstart + reg(1)
loop
end sub
function x00cd% (x00port) public
'X00 Status Variable setzen
'Carrier Detect CHECK
AH = &h03 :' Initialize driver
al = 0
' Parameters:
' Entry: DX = port number
DX = x00port -1
ax=256*ah+al
reg 1, ax
reg 4, DX
call interrupt &h14
x00CD% = int((reg (1) and 128)/128)
end function
function x00outroom% (x00port) public
'X00 Status Variable setzen
'OUTROOM in Buffer
AH = &h03 :' Initialize driver
al = 0
' Parameters:
' Entry: DX = port number
DX = x00port -1
ax=256*ah+al
reg 1, ax
reg 4, DX
call interrupt &h14
ax=reg(1)
ah= int(ax/256)
x00outroom% =int((ah and 64)/64)
end function
function x00instat% (x00port) public
'X00 Status Variable setzen
'Is anything in COM-Buffer?
AH = &h03 :' Initialize driver
al = 0
' Parameters:
' Entry: DX = port number
DX = x00port -1
ax=256*ah+al
reg 1, ax
reg 4, DX
call interrupt &h14
ax=reg(1)
ah= int(ax/256)
x00instat%=int((ah and 1)/1)
end function
sub X00dtr (X00PORT,x00dummy%)
'X00 DTR setzen L”schen
AH = &h06 :' Initialize driver
' Parameters:
' Entry: DX = port number
DX = x00port -1
al= x00dummy%:' 0 = watchdog off
' 1 = watchdog on
ax=256*ah+al
reg 1, ax
reg 4, DX
call interrupt &h14
end sub
sub X00reboot ()
'X00 Rechner Rebooten
AH = &h17 :' Initialize driver
' Parameters:
al=0
ax=256*ah+al
reg 1, ax
call interrupt &h14
end sub
sub X00receive (X00PORT,x$)
'X00 Datenstring empfangen
x$=space$(1)
offset = strptr(x$)
segment = strseg(x$)
AH = &h18 :' Initialize driver
ES=segment
DI=offset
cx=1
' Parameters:
' Entry: DX = port number
DX = x00port -1
al=0
ax=256*ah+al
reg 1, ax
reg 4, DX
reg 3, CX
reg 9, ES
reg 6, DI
call interrupt &h14
ax=reg(1)
if ax =0 then x$=""
end sub
sub X00clroutbuffer (x00port)
'X00 Rechner clear output buffer
AH = &h09 :' Initialize driver
dx =x00port-1
' Parameters:
al=0
ax=256*ah+al
reg 1, ax
reg 4, dx
call interrupt &h14
end sub
sub X00clrinbuffer (x00port)
'X00 Rechner clear input buffer
AX = &h0A00 :' Initialize driver
dx =x00port-1
' Parameters:
reg 1, ax
reg 4, dx
call interrupt &h14
end sub
* WCE 2.1G1/2081 *
--- InterEcho 1.19
---------------
* Origin: Toast House * (314) 994-0312 * (1:100/560)
|