summaryrefslogtreecommitdiff
path: root/system/shard-z80-ruc-64180/1.5/src/LOAD.MAC
blob: e6fa7e2584c71eabe66543f7c3bfedbb3f6b94cb (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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
	TITLE	LOADER - SHARD Loader fuer EUMEL System
;
	INCLUDE	HD64180.LIB
;
	.LIST
;
;****************************************************************
;
;	Lader fuer SHARD, wird vom Harddisk Boot aufgerufen
;
;	Version 1.0 - 22. 10. 1985 - R. Ellerbrake
;	Version 1.2 - 09.01.1987 - M. Staubermann, Konfigurationsblock
;
;****************************************************************
;

;	Konstanten
;
BASE	EQU	1000H		;Lader-Startadresse
	.PHASE	BASE
DEST	EQU	8000H		;Zieladresse fuer SHARD
BOTLNG	EQU	40H
SHARD	EQU	100H		;SHARD Anfangsadresse
;
;
;	Lader wird ab Adresse 1000H im Apple Speicher gestartet
;	und kopiert den SHard in den 64180 Speicher
;

LOAD:
	LD	A,080H		;0..7FFF:Apple, 8000..FFFF:64180 RAM
	OUT0	(CBAR),A
;
;	Speicherverwaltung umschalten, log. Adr. 0..7FFFH im unteren
;	Bereich des Apple Speichers liegen lassen, Adresse 8000..FFFFH
;	auf phys. Adresse 00000H..07FFFH abbilden
;
	LD	A,0F8H
	OUT0	(CBR),A		;F8+8=0! (00000... Phys. = 8000H log.)
;
	LD	A,60H		; Jetzt offiziell 60000... = 0000H log.
	OUT0	(BBR),A		; Wird beim ersten Zugriff auf 180-Memory aktiv
;
;	Umschaltroutine kopieren
;
	LD	HL,UMSCH-LOAD+BASE
	LD	DE,DEST
	LD	BC,CONFLG	 ; Page bis zum Ende uebertragen
	LDIR
;
	LD	A,2		; Burst Mode, Memory <--> Memory Transfer
	OUT0	(DMODE),A

	LD	BC,8*0100H+SAR0L; 8 Bytes in DMA-Register transportieren
	LD	HL,DMATAB
	OTIMR

	LD	A,01000011B	; DMA Kanal 0 starten
	OUT0	(DSTAT),A

	JP	DEST		; im 64180-Memory starten (noch 8000H)

DMATAB:	
	DEFW	SHARD+BASE	; SHard liegt noch ab 1100H
	DEFB	6		; im Basis-Speicher
	DEFW	SHARD		; soll nach 0100H
	DEFB	0		; im 64180-Speicher
	DEFW	(BOTLNG-1)*100H	; Bis auf LOAD-Modul (dieses) alles kopieren
;
;	Programmstueck zur RAM-Umschaltung phys. 0 = log. 0
;
UMSCH:
	XOR	A
	OUT0	(BBR),A		; 0000.7FFF log. = 8000..FFFF log = 00000 phys.
	JP	SHARD		; von 81xx --> 01xx springen 
	NOP

CONF:				; Konfigurationsblock

;--------------------------------------------------------------------------
NOVTST	EQU	200H		; Kein Vortest, kein Speichertest
NOSTST	EQU	100H		; Vortest, aber kein Speichertest
FREEU0	EQU	1		; EUMEL0 auf HG freigeben (loeschen!)
VORTST	EQU	0		; Vortest, Speichertest, (Normalfall)

BLINKP:	
	DEFB	8		; Blinkdauer des Cursors
BEEPFRQ:
	DEFB	10		; Tonfrequenz bei Bell (f = 10kHz/beepfrq)
ARC31:	
	DEFB	40H, 0, 0	; LUN der SCSI-Floppy
MODECONF:
	DEFW	VORTST
ID4:
	DEFW	0		; Lizenznummer des SHards
ID5:
	DEFW	0		; Installationsnummer des SHards
ID6:
	DEFW	0		; reserviert
URLK1:
	DEFB	31		; Archiv
URLK2:
	DEFB	0		; HG

	DEFS	1		; free

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

	DEFS	40H		; Interrupttabelle
	;ORG	BASE+UMSCH-LOAD+58H	; Nach der Interrupttabelle weiter


IKANTAB:			; Zuordnungstabelle fuer phys. --> log.
				; Kanaele mit Inputinterrupt
	DEFB	0, 1, 2, 3, 4, 5, 6, 7

KANTAB:				; Zuordnungstabelle fuer log. --> phys.
				; fuer alle Kanaele
	DEFB	0, 1, 2, 3, 4, 5, 6, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
	DEFB	0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
	DEFB	0FFH, 0FFH, 0FFH, 0FFH, 28, 29, 30, 31, 32

IOFTB:				; Kan. def.Funktionen	 Beschreibung
	DEFB	0CH		;  0  blockin/out	 Hintergrund
	; Stream I/O & Block I/O
	DEFB	0FH		;  1  blockin/out,iint/outvar Konsole-Terminal
	DEFB	03H		;  2  iint/outvar	 SCCB-Terminal
	DEFB	03H		;  3  iint/outvar	 SCCA-Terminal
	DEFB	02H		;  4  outvar     	 Drucker 180-Card
	DEFB	03H		;  5  iint/outvar	 Terminal Motherb.
	DEFB	02H		;  6  outvar     	 Drucker Motherb.
	DEFB	00H		;  7  -----------	 nicht definiert
	DEFB	00H		;  8  -----------	 nicht definiert
	DEFB	00H		;  9  -----------	 nicht definiert
	DEFB	00H		; 10  -----------	 nicht definiert
	DEFB	00H		; 11  -----------	 nicht definiert
	DEFB	00H		; 12  -----------	 nicht definiert
	DEFB	00H		; 13  -----------	 nicht definiert
	DEFB	00H		; 14  -----------	 nicht definiert
	DEFB	00H		; 15  -----------	 nicht definiert
	DEFB	00H		; 16  -----------	 nicht definiert
	; Block I/O
	DEFB	00H		; 17  -----------	 nicht definiert
	DEFB	00H		; 18  -----------	 nicht definiert
	DEFB	00H		; 19  -----------	 nicht definiert
	DEFB	00H		; 20  -----------	 nicht definiert
	DEFB	00H		; 21  -----------	 nicht definiert
	DEFB	00H		; 22  -----------	 nicht definiert
	DEFB	00H		; 23  -----------	 nicht definiert
	; Privilegierte Block I/O
	DEFB	00H		; 24  -----------	 nicht definiert
	DEFB	00H		; 25  -----------	 nicht definiert
	DEFB	00H		; 26  -----------	 nicht definiert
	DEFB	00H		; 27  -----------	 nicht definiert
	DEFB	0CH		; 28  blockin/blockout	 CP/M-Harddisk-Volume
	DEFB	0CH		; 29  blockin/blockout	 Apple-Drive 1
	DEFB	0CH		; 30  blockin/blockout	 Apple-Drive 0
	DEFB	1CH		; 31  format,blockin/out SCSI-Floppy

CPMOFS:	DEFB	00H, 0AH, 60H	; Anfang eines CP/M Volumes
CPMLAST:DEFB	00H, 2AH, 60H	; Ende+1 des CP/M Volumes

CONFLG	EQU	$-UMSCH
	.DEPHASE
;
;****************************************************************
;
	END