	opt	l+,p+	;linkbar, pos. indep.

* shell.s  Routine zum Aufruf von CLI-Befehlen in Basic
* (c) 1987 Peter Wollschlaeger

_SysBase         equ	4		;Basis von Exec
_LVOOpenLibrary  equ    -552  		;Library oeffnen
_LVOCloseLibrary equ    -414		;Library schliessen
_LVORead	 equ    -42		;Lese File
_LVOOpen         equ    -30		;Open File
_LVOClose        equ    -36
_LVOExecute	 equ	-222		;Execute CLI-Cmd

RELO	macro
	lea     \1(pc),a0		;Pgm muss lage-
	move.l	a0,\2			;unabhaengig werden
	endm
	
	movem.l	d0-d6/a0-a6,-(sp)	;14*4=56 Bytes
;                                        + Return-Adr. = 60
;
_main	lea	dosname(pc),a1		;Nane der DOS-Lib 
	moveq	#0,d0			;Version egal
	move.l  _SysBase,a6		;Basis Exec
        jsr     _LVOOpenLibrary(a6)	;DOS-Lib oeffnen
	tst.l	d0			;Fehler?
	beq	fini			;wenn Fehler, Ende
	move.l	d0,a6    		;Zeiger merken

	RELO	name,d1			;Name DOS-Lib
        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

	move.l	60(sp),a0		;Adresse Basic-String
	move.l	64(sp),d0		;Laenge

	subq.l	#1,d0			;-1 wegen dbra
	lea	buffer(pc),a1		;dahin
loop	move.b	(a0)+,(a1)+		;kopieren
	dbra	d0,loop
	move.b	#0,(a1)			;terminiere mit 0

	RELO	buffer,d1		;Adresse CLI-Befehl
	clr.l	d2			;kein Input
	move.l	d5,d3			;Window-Handle
	jsr	_LVOExecute(a6)		;CLI aufrufen

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

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

        move.l  a6,a1                   ;DOS-Lib-Basis
	move.l  _SysBase,a6		;Basis Exec
        jsr     _LVOCloseLibrary(a6)	;Funktion "Schliessen"
fini	movem.l	(sp)+,d0-d6/a0-a6

	rts				;Return zum CLI

dosname	 dc.b	'dos.library',0
	 cnop	0,2
name	 dc.b   'CON:10/20/600/160/Mit beliebiger Taste -> Basic',0
         cnop   0,2
buffer   dc.b	'ABCDE'			;damit ich das finde
	 end

       



