summaryrefslogtreecommitdiff
path: root/system/shard-z80-ruc-64180/1.5/src/CONOUT.MAC
blob: 273c56ed7e85a3e2a233f7e0d0f13c1bd8c546a4 (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
	TITLE	Basis 108 Console Ausgabe
;
	INCLUDE HD64180.LIB
;
	.LIST
;
;****************************************************************
;
;	C O N O U T
;
;	Direkte BASIS 80 Zeichen Ausgabe
;
;	Version 1.0 - 16. 9. 1985
;	Version 1.1 - 28. 10. 1985 (Invers korrigiert)
;	Version 1.2 - 30.12.86 (Zeichensatzeinstellung, Stringausgabe)
;
;	Teil des EUMEL SHARD fuer RUC 64180
;
;****************************************************************
;
;	Globale Adressen
;
	GLOBAL	CRTOUT, SWICUR, STROUT
;
;................................................................
;
;	Externe Variable
;
	EXTERNAL  TO6502, ZGERL, BEEPFRQ
;
;----------------------------------------------------------------
;
;	Konstanten fuer MMU
;
BIOSBANK EQU	0F2H		;CBAR fuer 6502 Zugriff
AR6502	EQU	5EH		;BBR-Wert fuer 6502 Zugriff
BASE	EQU	2000H		;6502 Adressoffset
;
;	6502 Softswitches
;
STRAM1	EQU	BASE+0C00CH	;Umschalten auf Videobank 0
STRAM2	EQU	STRAM1+1	;Umschalten auf Videobank 1

SWINV	EQU	BASE+0C000H	; > 127: Invers
SWFLSH	EQU	SWINV+1		; > 127: Flash
SW2OFF	EQU	SWFLSH+1	; Zeichensatzswitch 2
SW2ON	EQU	SW2OFF+1
SW1OFF	EQU	SW2ON+1
SW1ON	EQU	SW1OFF+1
SW0OFF	EQU	SW1ON+1
SW0ON	EQU	SW0OFF+1
;
;	andere 6502 Adressen
;
SCREEN	EQU	BASE+400H	;Anfang Video RAM
;
;----------------------------------------------------------------
;
	DSEG
;
;	lokale Daten
;
GOTOCNT: DEFB	0
GOTOX:	DEFB	0		;Reihenfolge GOTOX, GOTOY festgelegt !!
GOTOY:	DEFB	0
SCRADR:	DEFW	SCREEN
SCRXY:	DEFW	0
INVMOD:	DEFB	80H
CURCHR:	DEFB	0
CURINV:	DEFB	80H
;
OLDCBAR: DEFB	0		;Zwischenspeicher fuer CBAR
OLDBBR:	DEFB	0		;Zwischenspeicher fuer BBR
STKSAV:	DEFW	0		;Stackpointer Zwischenspeicher
	DEFS	20
STACK:
;
;----------------------------------------------------------------
;
	CSEG
;

;----------------------------------------------------------------
;
;	S T R O U T
;	Zeichenkette auf Masterconsole-Bildschirm ausgeben
;
;	Eingang: HL = Startadresse der Zeichenkette
;		 BC = Laenge der Zeichenkette
;	Ausgang: HL und Akku veraendert
;
STROUT:
	PUSH	BC
	PUSH	DE
	PUSH	IX

	PUSH	HL		; Stringadresse --> IX
	POP	IX

OUTLOOP:
	LD	A,B
	OR	C
	JR	Z,POPRET

	PUSH	BC
	LD	C,(IX+0)
	CALL	CRTOUT
	POP	BC
	INC	IX
	DEC	BC
	JR	OUTLOOP

POPRET:
	POP	IX
	POP	DE
	POP	BC
	RET
	
;-----------------------------------------------------------------
	
	INCLUDE	CONOUT4.INC
;
	END