summaryrefslogtreecommitdiff
path: root/system/shard-z80-ruc-64180/1.5/src/BOOT.INC
blob: b03a57cf7b7bbfcbe4f97e96ca20ed5c103f2378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

;
;****************************************************************
;
;	EUMEL Initialisierung fuer 6502 Teil
;
;	Version 0.4 vom 25. 11. 1985
;	Version	0.5 vom 24.12.86
;	Version	0.6 vom 14.01.87
;
;****************************************************************
;
	  .6502

          .radix    16

main_ROM  equ      0C082
lc_RAM    equ	   0C083
lc_lock	  equ	   0C00F

RESET	EQU	$FA62
BREAK	EQU	$FA4C
VECTBL	EQU	$FFFA

;................................................................
;
init65:
	sei
	lda	lc_RAM
	lda	lc_RAM		; LC-RAM write enable
	lda	lc_lock		; verriegeln

;
	ldx	#0		; pointer initialisieren
	stx	task
	stx	INTPAR1	
	stx	IFLG		; "Weiter" Kanal 5 Receiveinterrupt
	stx	E_FLG		; Keine Eingabeflusskontrolle
	stx	A_FLG		; Keine Ausgabeflusskontrolle
	stx	SerFlg		; Kein Ausgabestop
	stx	Wait_flg	; 64180 darf auf Pufferdescriptor zugreifen
	stx	bus_locked	; Inteerupt an 64180 erlaubt, da kein Bus-Lock
	stx	err1_bits
	stx	err5_bits	; Keine Uebertragungs-Fehler aufgetreten
	stx	KeyIn		; Tastaturpuffer leer
	stx	KeyOut
	stx	param1+1

	dex			; X := FF
	stx	param2
	stx	param2+1
	stx	last_track

		lda	#0		; Physische Addresse der Sektoren
		tax			; bestimmen (ueber Interleave)
interlv_1:	
		sta	ilv_tble,x
		inx
		clc
		adc	#3		; interleave
		and	#0F		; MOD 16
		cpx	#10
		bne	interlv_1

	ldx	#80
	stx	param1
	jsr	GCTRL		; Grafik initialisieren

	jsr	init_pbuf

	ldx	#initab_len
rloop:	lda	rbuf_ini,x
	sta	rbuf,x
	dex
	bpl	rloop

	ldx	#initab_len
tloop:	lda	tbuf_ini,x
	sta	tbuf,x
	dex
	bpl	tloop

	ldx	#6
vecloop:
	lda	vector,x
	sta	vectbl,x	; Vektoren ins RAM kopieren
	dex
	bne	vecloop

	sta	KeyStr		; Tastatur ruecksetzen
	sta	0C009		;   auf Interrupt schalten

;	serielle Schnittstelle initialisieren
;
	lda	#1E		; 9600 Bd, 8 Bits/Char., 1 Stopbit
	sta	SER_CTR
	lda	#09		; no parity, rx/tx irq's enabled
	sta	SER_COM

	ldx	SLT180
	stx	SLOT180
	cli			; Interrupt enable

	jmp	task_loop	; Jump in die Task_Loop_Routine

vector:	
	dw	resvec		; NMI
	dw	resvec		; RESET
	dw	irqvec		; IRQ & BRK

tbuf_ini:
	DW	(SBUFEND - SBUFBEG) * 100H, 0
	DW	SBUFBEG * 100H, SBUFBEG * 100H
	DB	SBUFBEG, SBUFEND

rbuf_ini:
	DW	(RBUFEND - RBUFBEG) * 100H, 0
	DW	RBUFBEG * 100H, RBUFBEG * 100H
	DB	RBUFBEG, RBUFEND
	
	ds	$100-(*-start)