Atari XF551 via RS232 mittels winapi unter pb ansprechen
Verfasst: 07.08.2006 00:08
Geschafft!
Es ist mir gelungen die Atari XF551 über RS232 mittels Winapi unter PB anzusprechen.
Ein Projekt nimmt Formen an, dank PB und seiner Transparenz.
Ziel ist es Ataridisketten als Imagedateien auf die PCFestplatte zu kopieren und dazu das Original Ataridrive XF551 (Drive zum 8bit ATARI130XE) zu verwenden.
Der erste Schritt ist getan der Rest ist Fleiß
Einen 8fach Drivesimulator hatte ich schon vor Jahren unter QBX geschrieben. Leider ging er verloren(HD-Crash)
auf ein Neues!
HW besteht aus aus einem Max 232 + Hühnerfutter
RTS simuliert Commandleitung der des seriellen ATARI-Busses
Es ist mir gelungen die Atari XF551 über RS232 mittels Winapi unter PB anzusprechen.
Ein Projekt nimmt Formen an, dank PB und seiner Transparenz.
Ziel ist es Ataridisketten als Imagedateien auf die PCFestplatte zu kopieren und dazu das Original Ataridrive XF551 (Drive zum 8bit ATARI130XE) zu verwenden.
Der erste Schritt ist getan der Rest ist Fleiß
Einen 8fach Drivesimulator hatte ich schon vor Jahren unter QBX geschrieben. Leider ging er verloren(HD-Crash)
auf ein Neues!
HW besteht aus aus einem Max 232 + Hühnerfutter
RTS simuliert Commandleitung der des seriellen ATARI-Busses
Code: Alles auswählen
Global com1h.l, DCB1.dcb, a.b, outbuffer.s,inbuffer.s, dummy.l
;********************************************************************************************
Procedure open_port()
com1h= CreateFile_("COM1:", #GENERIC_READ | #GENERIC_WRITE,0, 0, #OPEN_EXISTING, 0, 0)
If handle = #INVALID_HANDLE_VALUE
Debug("Couldn't open serial device!")
Else
ct.COMMTIMEOUTS
ct\ReadIntervalTimeout = 0
ct\ReadTotalTimeoutMultiplier = 0
ct\ReadTotalTimeoutConstant = 1000
ct\WriteTotalTimeoutMultiplier = 0
ct\WriteTotalTimeoutConstant = 0
SetCommTimeouts_(com1h,@ct)
DCB1.dcb
DCB1\DCBlength=8
DCB1\BaudRate=19200
;BPCDD STOIENR AD2345678901234567
DCB1\fbits= %00000100000001000000000000000000
DCB1\wReserved=0
DCB1\XonLim=2048
DCB1\XoffLim=2048
DCB1\ByteSize=8
DCB1\Parity=#NOPARITY
DCB1\StopBits=#ONESTOPBIT
DCB1\XonChar=$11
DCB1\XoffChar=$13
DCB1\ErrorChar=0
DCB1\EofChar=0
DCB1\EvtChar=0
DCB1\wReserved1=0
SetCommState_(com1h,@DCB1)
PurgeComm_(com1h,#PURGE_TXCLEAR|#PURGE_RXCLEAR)
x.l
GetCommMask_(com1h,@x)
x=0
SetCommMask_(com1h, 0)
Delay(100)
EndIf
EndProcedure
;********************************************************************************************
Procedure close_port()
CloseHandle_(com1h)
EndProcedure
; ********************************************************************************************
Procedure.l uns(b.b)
l.l
PokeB(@l,PeekB(@b))
ProcedureReturn l
EndProcedure
;********************************************************************************************
Procedure main()
open_port()
outbuffer ="abcdef"
PokeB(@outbuffer+0,49)
PokeB(@outbuffer+1,83)
PokeB(@outbuffer+2,0)
PokeB(@outbuffer+3,0)
PokeB(@outbuffer+4,132)
Debug("*******outbuffer**************")
Debug (Str(uns(PeekB(@outbuffer+0))))
Debug (Str(uns(PeekB(@outbuffer+1))))
Debug (Str(uns(PeekB(@outbuffer+2))))
Debug (Str(uns(PeekB(@outbuffer+3))))
Debug (Str(uns(PeekB(@outbuffer+4))))
Debug("******************************")
EscapeCommFunction_(com1h,#SETRTS)
Delay(1)
WriteFile_(com1h,@outbuffer+0,5,@dummy,#Null)
Delay(20)
EscapeCommFunction_(com1h,#CLRRTS)
Delay(10)
EscapeCommFunction_(com1h,#SETRTS)
Delay(1)
WriteFile_(com1h,@outbuffer+0,5,@dummy,#Null)
;WriteFile_(com1h,@outbuffer+1,1,@dummy,#Null)
;WriteFile_(com1h,@outbuffer+2,1,@dummy,#Null)
;WriteFile_(com1h,@outbuffer+3,1,@dummy,#Null)
;WriteFile_(com1h,@outbuffer+4,1,@dummy,#Null)
inbuffer=".............................."
ReadFile_(com1h,@inbuffer,7,@dummy,#Null)
EscapeCommFunction_(com1h,#CLRRTS)
Debug("*******inbuffer***************")
Debug (Str(uns(PeekB(@inbuffer+0))))
Debug (Str(uns(PeekB(@inbuffer+1))))
Debug (Str(uns(PeekB(@inbuffer+2))))
Debug (Str(uns(PeekB(@inbuffer+3))))
Debug (Str(uns(PeekB(@inbuffer+4))))
Debug (Str(uns(PeekB(@inbuffer+5))))
Debug (Str(uns(PeekB(@inbuffer+6))))
Debug("******************************")
;Debug (Str(uns(PeekB(@inbuffer+7))))
;Debug (Str(uns(PeekB(@inbuffer+8))))
;Debug (Str(uns(PeekB(@inbuffer+9))))
Delay(35)
Close_port()
;MessageRequester("Information", outbuffer +"gesendet"+Chr(13),inbuffer+"empfangen", #PB_MessageRequester_Ok)
EndProcedure
;********************************************************************************************
main()
End