;**************************************************************************
;
; Filename : MEMORY.D
; -------------------
;
; (c) 1990 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
;  Definitionen der Memorybereiche
;
;
;**************************************************************************

INPUT_SIZE	.equ	$08	; Größe des Input-Buffers


ZP	.set	$0000	; Startadr. der Zeropage
BU	.set	$0100	; Bereich für Buffer außerhalb der Zeropage

STACK_END	.equ	$01e0	; Stackbereich $1ff-$1e0, 32 bytes
RAM1	.set	$0200	; RAM-Bank 1
RAM1_END	.equ	$07ff	; Ende RAM-Bank 1
RAM2	.set	$3000	; RAM-Bank 2, nur mit Zusatz-RAM
RAM2_END	.equ	$37ff	; Ende RAM-Bank 2





	; --------------------------------------------------
	; Zeropage Adressen, keine Initialisierung bei Reset
	; --------------------------------------------------

uhr_buff	.equ	ZP	; Buffer für die Uhr
ZP	.set	ZP+UHR_BULA


ind_adr	.equ	ZP	; 2Byte Zeropageadr. für indirekte Adressierung
ZP	.set	ZP+2



	; ------------------------------------
	; ab hier wird bei Reset initialisiert
	; ------------------------------------

INIT_START	.set	ZP	; Startadr. des initialisierten RAM`s




hlp_reg	.equ	ZP	; Hilfsregister
ZP	.set	ZP+1

struct_tim	.equ	ZP	; 10mS Timer Struktur
ZP	.set	ZP+ANZ_TIM	; Platz für Anzahl der Timer reservieren

tim_100ms_t	.equ	ZP	; Anzahl der 10mS IRQ`s bis 100mS erreicht
ZP	.set	ZP+1

struct_tim100 .equ	ZP	; 100mS Timer Struktur
ZP	.set	ZP+ANZ_TIM100

stat_uhrp	.equ	ZP	; Status des Uhrports
ZP	.set	ZP+1

uhr_tim	.equ	ZP	; Uhr Timer, abgelaufen wenn Sekunde erreicht
ZP	.set	ZP+1

sekunde	.equ	ZP	; Sekunde ist erreicht
ZP	.set	ZP+1

uhr_timdat	.equ	ZP	; Offset auf Uhrbuffer bei Uhr stellen
ZP	.set	ZP+1

dp_bu_po	.equ	ZP	; Pointer auf Char im Displaybuffer
ZP	.set	ZP+1

blink_bit	.equ	ZP	; Blink BIT für LED`s
ZP	.set	ZP+1

led_po	.equ	ZP	; 2 Byte Pointer, zeigt auf LED-RAM
ZP	.set	ZP+2

led_yl	.equ	ZP	; aktuelle YL Achse
ZP	.set	ZP+1

led_xl	.equ	ZP	; Byte fuer XL-Achsen
ZP	.set	ZP+1

akt_mb	.equ	ZP	; aktuelle MB-Achse
ZP	.set	ZP+1

wta_merk	.equ	ZP	; Zustand der Wähltastatur vor Entprell. merken
ZP	.set	ZP+1

wtast	.equ	ZP	; Tastenwert einer Wähltaste
ZP	.set	ZP+1

wta_prg	.equ	ZP	; Prg. welches bei Wähltaste ausgeführt wird
ZP	.set	ZP+1

passw_offs	.equ	ZP	; BTA-Modus wurde eingeleitet, Offs. auf Passw.
ZP	.set	ZP+1

tast_offs	.equ	ZP	; Offset auf Tastaturtabelle für LED ein/aus
ZP	.set	ZP+1

akt_x	.equ	ZP	; aktuelle X-Achse bei Tastaturabfrage
ZP	.set	ZP+1

x2_9_merk	.equ	ZP	; zustand X2-X9 retten, Display RS-Flag
ZP	.set	ZP+1

x_achse	.equ	ZP	; Port X-Achse bei Tastaturabfrage
ZP	.set	ZP+1

tast_merk	.equ	ZP	; Zustand der Y-Achse vor Entprell. merken
ZP	.set	ZP+1

taste	.equ	ZP	; Offset auf Tasten-Matrix, Tastenstatus
ZP	.set	ZP+1

tw	.equ	ZP	; Tastenwert
ZP	.set	ZP+1

rl23	.equ	ZP	; Zustand RL2, RL3 merken
ZP	.set	ZP+1

input_po	.equ	ZP	; Pointer auf Input-Buffer
ZP	.set	ZP+1

anz_input	.equ	ZP	; Anzahl der Eingaben
ZP	.set	ZP+1

displ_prg	.equ	ZP	; Prg. welches bei Displayanz. ausgeführt wird
ZP	.set	ZP+1

vers_stat	.equ	ZP	; Status Byte für Version-Anzeige
ZP	.set	ZP+1

dip_stat	.equ	ZP	; Zustand des DIP-Switch
ZP	.set	ZP+1

feap_stat	.equ	ZP	; Zustand des Telefons
ZP	.set	ZP+1

ltg_stat	.equ	ZP	; Zustand der Leitung
ZP	.set	ZP+1

su_stat	.equ	ZP	; Zustand der Summers
ZP	.set	ZP+1

modus	.equ	ZP	; Status Byte für akt. Modus, (Sp. Kontr, ...)
ZP	.set	ZP+1

txtnr	.equ	ZP	; akt. Textnr. für mehrere Texte ausgegeben
ZP	.set	ZP+1

nam_sp	.equ	ZP	; akt. Speicheradr. für Namentasten
ZP	.set	ZP+2

nam_ziff	.equ	ZP	; akt. Ziffer bei Rufnr. speichern
ZP	.set	ZP+1

wahl_bu_po	.equ	ZP	; Anzahl der Ziffern im Wahl-Buffer
ZP	.set	ZP+1

wahl_po	.equ	ZP	; Pointer auf aktuelle Wahlziffer
ZP	.set	ZP+1

whl_cu_po	.equ	ZP	; Wahlablauf Cursorposition
ZP	.set	ZP+1

ziffer	.equ	ZP	; Anzahl der Impulse für Wahlziffer
ZP	.set	ZP+1

gesprd	.equ	ZP	; Gesprächsdauer
ZP	.set	ZP+1

akt_txtchar	.equ	ZP	; aktuelles Textzeichen bei BTA-Textber.
ZP	.set	ZP+1

term_kodat	.equ	ZP	; akt. Termindaten bei Kontrolle
ZP	.set	ZP+1

term_nr	.equ	ZP	; akt. Terminnr. bei Speichern/Kontrolle
ZP	.set	ZP+1

err_term	.equ	ZP	; BIT-Nr. für erreichte Termine
ZP	.set	ZP+1

term_su	.equ	ZP	; Anz. der Termin-Summer-Töne
ZP	.set	ZP+1




INIT_END	.equ	ZP	; Ende des initialisierten RAM`s





ttime_adr	.equ	ZP	; Adr. der Terminstruktur für Zeit eintragen
ZP	.set	ZP+2

ttxt_adr	.equ	ZP	; Adr. der Terminstruktur für Text eintragen
ZP	.set	ZP+2

ttxt_count	.equ	ZP	; Anzahl der eingegeben Textzeichen
ZP	.set	ZP+2


term_time	.equ	ZP	; Terminspeicher für Zeit
HLP	.set	MAX_TERM*4	; Stunde, Minute, Tag, Monat
ZP	.set	ZP+HLP

term_days	.equ	ZP	; Speicher für Termintage
ZP	.set	ZP+MAX_TERM



	.ifmi	$100-ZP	; Zeropage überschritten ?
	!!!!  ZEROPAGE  !!!!
	.endif



	; ---------------------------------------------------
	; Buffer ausserhalb der Zeropage, unterhalb des Stack
	; wird nicht initialisiert
	; ---------------------------------------------------

dp_buff	.equ	BU	; Display-Buffer
BU	.set	BU+DP_BU_LA

led_ram	.equ	BU	; RAM für LED-Matrix
BU	.set	BU+LED_MATRIX
LED_RAM_END	.equ	BU	; LED-RAM Ende

input_buff	.equ	BU	; Inputbuffer für verschiedene Anwendungen
BU	.set	BU+INPUT_SIZE

wahl_buff	.equ	BU	; Wahl-Buffer für gewählte Ziffern
BU	.set	BU+MAX_WHL_ZIFF+1	; Endezeichen = NULL

merk_buff	.equ	BU	; Merker-Buffer
BU	.set	BU+MAX_WHL_ZIFF+1	; Endezeichen = NULL




	.ifmi	STACK_END-BU	; Stack errreicht ?
	!!!!  STACK  !!!!
	.endif



	; --------------------------------------------------
	; Buffer ausserhalb der Zeropage, oberhalb des Stack
	; wird nicht initialisiert
	; --------------------------------------------------


tast_tab	.equ	RAM1	; Tastenberrechtigung
RAM1	.set	RAM1+TAST_BER	; je Taste 2 Bytes reservieren

tast_txt	.equ	RAM1	; Tastenberrechtigung für ASCII-Zeichen
RAM1	.set	RAM1+TAST_MATRIX	; je Taste 1 Byte reservieren


nam_buff1	.equ	RAM1	; Speicher für Namentasten
HLP	.set	MAX_NAM_ZIFF*MAX_NAM1	; Speichergröße für Namtast im 1.RAM
RAM1	.set	RAM1+HLP


term_text	.equ	RAM1	; Terminspeicher für Texte
HLP	.set	MAX_TERM*TTXT_LEN
RAM1	.set	RAM1+HLP




	.ifmi	RAM1_END-RAM1	; RAM-Ende erreicht
	!!!!  RAM1  !!!!
	.endif






	; ----------------------------------------------------
	; Definitionen im Zusatz-RAM, wird nicht initialisiert
	; ----------------------------------------------------

nam_buff2	.equ	RAM2	; erweiterter Speicher für Namentasten
HLP	.set	MAX_NAM_ZIFF*MAX_NAM2	; Speichergröße für Namtast im 2.RAM
RAM2	.set	RAM2+HLP


	.ifmi	RAM2_END-RAM2	; RAM-Ende erreicht
	!!!!  RAM2  !!!!
	.endif


