	opt	l-			;nicht linkem!

* F1 Funktionstasten lesen 


	include  OpenDos.i

_LVOOpen        equ  -30
_LVOClose       equ  -36

        move.l  #name,d1		;Name von RAW:
        move.l  #1005,d2		;Status = gibt es
        jsr     _LVOOpen(a6)		;nun oeffnen
	move.l	d0,d5			;Handle merken
        tst.l   d0			;Fehler?
        beq     fini			;wenn ja, abbrechen

loop    move.l  d5,d1			;von RAW lesen
        move.l  #buffer,d2		;in diesen Puffer
        move.l  #1,d3			;1 Zeichen
        jsr     _LVORead(a6)		;Lesen aufrufen

        cmp.b   #'x',buffer		;Zeichen = 'x' ?
	beq     fertig			;wenn ja

        move.l  buffer,d2		;Zeichen nach d2
        lea.l   hbuf,a0			;Ziel fuer Wandlung
        move.b  #' ',2(a0)		;Blank nach Hex
        bsr     hex			;in Hex-Zahl wandeln

* nun Hex-Zahl ausgeben:
	move.l	d5,d1			;auch Output im Window
	move.l	#hbuf,d2		;Address Hex-String
	move.l	#3,d3			;Laenge 
	jsr	_LVOWrite(a6)		;Funktion "Schreiben"

        bra      loop			;auf ein Neues

fertig	move.l	d5,d1			;RAW wieder schliessen
        jsr     _LVOClose(a6)

* Zum Schluss immer die Lib schliessen!
        move.l  a6,a1                   ;DOS-Lib-Basis
	move.l  _SysBase,a6		;Basis Exec
        jsr     _LVOCloseLibrary(a6)	;Funktion "Schliessen"

fini	rts				;Return zum CLI


* Konvertiere d2.l in ASCII-String ab (a0) 
hex
	moveq	#2-1,d1		;nur fuer 2 Nibble (von 8)
next	rol.l	#4,d2		;hole 1 Nibble
	move.l	d2,d3		;nach d3 retten 
	and.b	#$0f,d3		;maskiere es
        add.b   #48,d3		;in ASCII wandeln
	cmp.b	#58,d3		;ist es >9 ?
	bcs     out		;wenn nicht
	addq.b	#7,d3		;sonst muss es A-F sein
out	move.b	d3,(a0)+	;1 Zeichen abspeichern
	dbra	d1,next		;next nibble
	rts

* Datenbereich:

dosname	 dc.b	'dos.library',0
	 cnop	0,2
name	 dc.b   'RAW:40/100/580/80/Stop mit x',0
         cnop   0,2

buffer   ds.b   8
         cnop   0,4

hbuf     ds.b   10
       

