Login
Back to forumReply to this topicGo to last reply

Posted By

SVS
on 2012-02-23
05:56:03
 Device detecting

Hello,
is there a possible way to detect the existence of a connected device (say a serial), without to search for a Basic "?DEVICE NOT PRESENT ERROR" ?

Posted By

Gaia
on 2012-02-23
15:39:24
 Re: Device detecting

Something like this should work:

. 05FF 78 SEI
. 0600 A9 04 LDA #$04 ; set ATN to low
. 0602 05 01 ORA $01
. 0604 85 01 STA $01
. 0606 A2 00 LDX #$00
. 0608 CA DEX
. 0609 D0 FD BNE $0608 ; just wait a little
. 060B 24 01 BIT $01 ; check highest bit of $01 (DATA low)
. 060D 00 BRK
G5FF


Now you'll have the highest bit of SR (status register) set if no serial device is present, and zero in case there is.
Change the BRK to RTS and insert a CLI in case you are using it as a subroutine.

Posted By

rudis
on 2012-02-24
15:55:39
 Re: Device detecting

$04 is in zeropage?

Posted By

Csabo
on 2012-02-24
16:09:27
 Re: Device detecting

Yes, $04 is a zeropage address. Zeropage means addresses from $00-$FF. (Though Gaia wrote #$04 above, so that's an immediate value, not an address.)

Posted By

SVS
on 2012-02-26
04:10:08
 Re: Device detecting

Hi,
thank you all for your suggestions.
I've find that the easy way for detecting existence/connection of a peripheral (serial and others) is testing ST after CLOSE operation.
In fact for some reasons, ST is not affected by a simple OPEN (like OPEN 15,8,15) but indeed by a CLOSE.
It is sufficient to do:
OPEN, 15,9,15: CLOSE 15: IF ST THEN ...
ST assumes the value of 0 if device is existing and replying, value of -128 when missing.

P.S. Now I run to update SVS-Ultimate map! happy

Posted By

siz
on 2012-02-26
05:57:12
 Re: Device detecting

An OPEN without a command only prepares the channel for I/O. Actual communication happens only for a PRINT# or a CLOSE. That's why you can detect a device not present only at CLOSE time. Perhaps try OPEN15,dd,15,"UI". (But be careful because my 1541-II with SpeedDOS halts for UI command. :/ )



Back to topReply to this topic


Copyright © Plus/4 World Team, 2001-2024. Support Plus/4 World on Patreon