	ORG $A800
*----------------------------------
* Assembler-Kurs Nummer #7
*
* CIO-Demo
*
* Mit 'G'oto $A800 starten
*----------------------------------
	JMP START
ICCOM	EQU $342	Kommando
ICBADR	EQU $344 Adresse-Zeiger
ICBLEN	EQU $348 Laenge
ICAUX	EQU $34A Hilfsregister
CIOV	EQU $E456 Einsprungsvektor
COLOR2	EQU $2C6 Hintergrundfarbe
BACK	EQU $2C8 Rahmenfarbe
*
TEXT	ASC "Suchfile eingeben   >"
TEND     NOP
SN	ASC "E:"
	DFB $9B
FN	DFB $9B,$9B,$9B,$9B,$9B,$9B,$9B,$9B,$9B
	DFB $9B,$9B,$9B,$9B,$9B,$9B,$9B,$9B,$9B
	DFB $9B,$9B,$9B
*----------------------------------
* Kanal 0 (Editor) schliessen
* und wieder oeffnen.
*----------------------------------
START	LDX #$00		 Kanal 0
	LDA #12 		CLOSE
	STA ICCOM,X
	JSR CIOV
*
	LDX #$0 		Kanal 0
	LDA #3 		OPEN
	STA ICCOM,X
	LDA #SN
	STA ICBADR,X
	LDA #SN:H
	STA ICBADR+1,X
	LDA #12
	STA ICAUX,X
	LDA #0
	STA ICAUX+1,X
	JSR CIOV
*----------------------------------
* kurzen Text ausgeben und
* Farbe angenehm setzen
*----------------------------------
*
	LDX #$0 		Bytes
	LDA #11 		ausgeben
	STA ICCOM,X
	LDA #TEXT
	STA ICBADR,X
	LDA #TEXT:H
	STA ICBADR+1,X
	LDA #TEND-TEXT 	Text-
	STA ICBLEN,X 	laenge
	LDA #TEND-TEXT:H
	STA ICBLEN+1,X
	JSR CIOV
*
	LDA #$90 	dunkelblau
	STA COLOR2
	LDA #$A0 	dunkelgruen
	STA BACK
*----------------------------------
* Filename einlesen, Kanal 1
* schliessen, und Filenamen-
* Synthax ueberpruefen
*----------------------------------
*
	LDX #$0 		Kanal 0
	LDA #5 		INPUT
	STA ICCOM,X
	LDA #FN+2
	STA ICBADR,X
	LDA #FN+2:H
	STA ICBADR+1,X
	LDA #20
	STA ICBLEN,X
	LDA #0
	STA ICBLEN+1,X
	JSR CIOV
*
	LDX #$10 	Kanal 1
	LDA #12 		CLOSE
	STA ICCOM,X
	JSR CIOV
*
	LDY #FN
	LDX #FN:H	 Pruefen,ob
	LDA #': 		'D:' ein-
	CMP FN+3 	getippt
	BEQ ZZY001 	 wurde und
	CMP FN+4		 ergaenzen,
	BEQ ZZY001 	 falls
	STA FN+1 	nicht
	LDA #'D		 (D: davor
	STA FN		 setzen und
	BPL ZZY003	 Adresse 2
ZZY001	INY 		vor FN
	BNE ZZY002 	 lassen),
	INX 		sonst auf
ZZY002	INY 		FN+2 hoch-
	BNE ZZY003 	 setzen
	INX 		(Eingabe)
*
*----------------------------------
* Kanal 1 fuer Directory
* oeffnen
*----------------------------------
ZZY003	TXA
	LDX #$10		 Kanal 1
	STA ICBADR+1,X
	TYA
	STA ICBADR,X
	LDA #3 		oeffnen
	STA ICCOM,X	 fuer
	LDA #6		 Directory
	STA ICAUX,X
	JSR CIOV
	BMI ERR
*
*(die Dir koennte auch Schritt-
*weise mit Inputs eingelesen
*werden, doch da genug Platz da
*ist, wird sie auf einmal ein-
*gelesen).
*
	LDX #$10 	Kanal 1
	LDA #7 		BGET
	STA ICCOM,X
	LDA #BUF 	nach BUF
	STA ICBADR,X
	LDA #BUF:H
	STA ICBADR+1,X
	LDA #$5F		 Laenge
	STA ICBLEN,X	 bis
	STA ICBLEN+1,X	 Error
	JSR CIOV		 136
	BPL ZZY099 
	CPY #136		 EOF or ERR?
	BNE ERR
*
ZZY099	LDX #$0		 Kanal 0
	LDA #11 		ausgeben
	STA ICCOM,X	 und zwar
	LDA #BUF 	die nach
	STA ICBADR,X	 BUF ge-
	LDA #BUF:H 	lesene
	STA ICBADR+1,X 	Dir.
*
* Anzahl der tatsaechlich
* gelesenen Daten in Kanal 1
* (nach Rueckkehr in ICBLEN)
* zum Ausgeben nutzen
*
	LDA ICBLEN+$10
	STA ICBLEN,X
	LDA ICBLEN+$11
	STA ICBLEN+1,X
	JSR CIOV
	BMI ERR
	RTS
*----------------------------------
ERR	BRK
*----------------------------------
BUF	NOP

����������������