 **************************************************************************
;
; Filename : TERMINAL.ASM
; -----------------------
;
; (c) 1993 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Terminal Mode Funktionen
;
;
;**************************************************************************

MODUL_START	set	*	; Größe des Moduls berechnen






; =========================================================================
;
; Funktion	: Terminal Taste wurde betätigt, Terminal Mode aktivieren
;
; Eingang	: -------
;
; Ausgang	: -------
;
; Register	: -------
;
; (c) by Thomas Lehmann März 1993
;
; =========================================================================

key_tmode
	block
	; LED phasenverschoben blinken lassen
	; -----------------------------------
	lda #LD_L|LD_T	; LED Wert laden
	jsr set_led	; und LED einschalten
	lda #LD_R|LD_TP	; LED Wert laden
	jsr set_led	; und LED einschalten

	smb TTY_CON,tty_sts	Terminal Modus ist aktiv
	lda #WTA_TMODE	Wähltasten umleiten
	sta wta_prg

	ldx #<tmode_txt	; "Terminal Mode" ins Display
	ldy #>tmode_txt
	jsr puttxt

	lda #DISPL_OFF	; kein Display Timeout
	sta displ_prg

	; Start Text auf Console ausgeben
	; -------------------------------
	jsr con_version	Version ausgeben
	ldy #<con_tm_txt	Terminal Mode
	lda #>con_tm_txt
	jsr con_puts
	jsr con_puthlp	Hilfe Text ausgeben
	jmp con_putcmd

	
tmode_txt	byte  DSP_CLR
	shift "Terminal Mode"


con_tm_txt	null "   Terminal Mode"
	bend

	; Einsprung bei Wähltaste
	; =======================

wta_tmode	cmp #1
	beq tmode_xon
	cmp #2
	beq tmode_xoff
	rts

tmode_xon	lda #17
	jmp con_putch
tmode_xoff	lda #19
	jmp con_putch





	; =======================================
	; verschiedene Texte auf Console ausgeben
	; =======================================

con_puthlp	ldy #<conhlp_txt	Textadresse holen
	lda #>conhlp_txt
	jmp con_puts

conhlp_txt	byte CR,LF,CR,LF
	text "useable commands:"
	byte CR,LF
	text "-----------------"
	byte CR,LF
	text "   ?           this help page"
	byte CR,LF
	text "   v           version"
	byte CR,LF
	text "   R           program reset"
	byte CR,LF
	text "   d [adress]  memory dump, $100 bytes"
	byte CR,LF
	text "   C           connect line"
	byte CR,LF
	text "   D           disconnect line"
	byte CR,LF
	text "   0-9         dial number"
	byte CR,LF
	byte 0

; ==========================================================================

con_putcmd	ldy #<concmd_txt
	lda #>concmd_txt
	jmp con_puts

concmd_txt	byte CR,LF
	null "command > "

; ==========================================================================

con_cmderr	ldy #<conerr_txt
	lda #>conerr_txt
	jmp con_puts

conerr_txt	byte CR,LF
	null "unknown command"

; ==========================================================================

con_version	jsr con_newline	Return
	ldy #<vers_txt	Version ausgeben
	lda #>vers_txt
	jsr con_puts
	
	jsr con_space
	lda #"/"
	jsr con_putch
	jsr con_space
	ldy #<vdate_txt	Versions Datum ausgeben
	lda #>vdate_txt
	jmp con_puts

; ==========================================================================











; =========================================================================
;
; Type	: Unterprg.
;	: Hexwert nach dezimal wandeln
;
; Eingang	: Hexwert im Accu
;
; Ausgang	: Dezimalwert im Accu, maximal 99
;
; Register	: Accu
;
; (c) by Thomas Lehmann Feb. 1990
;
; =========================================================================

	ifdef JACK_LEMMON

hextodez	stz hlp_reg	; Hilfsregister

hexdez_lp	cmp #10		; Wert ok ?
	bcc hexdez_end	; ja

	sec
	sbc #10		; Hex abziehen
	inc hlp_reg	; Dezimalwert high erhöhen
	bra hexdez_lp	; neuer Durchlauf

hexdez_end	phy		; Y-Reg. retten
	tay		; low Byte in Y-Reg.
	lda hlp_reg	; high Byte laden
	jsr merge_val	; 1 Byte erzeugen
	ply
	rts

	endif


show_byte	pha
	phx
	phy
	ldx #07		; Offset auf LED-RAM
	jsr show_b
	ply
	plx
	pla
	rts

show_byte_1	pha
	phx
	phy
	ldx #YL1+7	; Offset auf LED-RAM
	jsr show_b
	ply
	plx
	pla
	rts

show_byte_2	pha
	phx
	phy
	ldx #YL2+7	; Offset auf LED-RAM
	jsr show_b
	ply
	plx
	pla
	rts

show_byte_3	pha
	phx
	phy
	ldx #YL3+7	; Offset auf LED-RAM
	jsr show_b
	ply
	plx
	pla
	rts

show_byte_4	pha
	phx
	phy
	ldx #YL4+7	; Offset auf LED-RAM
	jsr show_b
	ply
	plx
	pla
	rts


show_b	ldy #07		; 7 BIT

show_lp	stz led_ram,x
	asl
	bcc show_1

	dec led_ram,x

show_1	dex
	dey
	bpl show_lp

	rts





; --------------------------------------------------------------------------

HLP	set	*
_DEBUGGER	equ	HLP-MODUL_START		; Größe des Moduls


