10 ';**********************************
20 ';Verschiedene Schriftarten erzeugen
30 ';Aufruf: CALL &9E00,Attribut
40 ';Attribut=0: Normalschrift
50 ';         1: Duennschrift
60 ';         2: Fettschrift
70 ';         4: Kursiv
80 ';         8: Unterstrichen
90 ';Setzt SYMBOL AFTER 32 voraus !!!
100 ';*********************************
110 '
120 'ROMON  EQU &B906 ;unteres ROM ein
130 'ROMOFF EQU &B909 ;unteres ROM aus
140 'GETMAT EQU &BBA5 ;TXT GET MATRIX
160 'ANZAHL EQU 95    ;95 Zeichen
170 '
180 'ORG &9E00      ;Aufrufadresse
190 '
200 'CP 1           ;1 Parameter?
210 'RET NZ         ;zurueck wenn nicht
220 'LD A,32        ;A=ASC(" ")
230 'CALL GETMAT    ;Matrixadr. holen
240 'RET NC         ;zurueck wenn
250 '               ;Matr. nicht im RAM
260 'PUSH HL        ;Matrixadr. merken
270 'CALL ROMON     ;unteres ROM ein
280 'EX DE,HL       ;Matrixadr. nach DE
290 'LD HL,&3900    ;Matrixadr. im ROM
300 'LD BC,760      ;95*8 Bytes
310 'LDIR           ;ins RAM kopieren
320 'CALL ROMOFF    ;unteres ROM aus
330 'POP HL         ;Matrixadr. holen
340 '
350 'LD A,(IX+0)    ;Textattribut
360 'OR A           ;Normalschrift?
370 'RET Z          ;dann zurueck
380 'RRA            ;sonst Bits testen:
390 'CALL C,DUENN   ;-> Duennschrift
400 'RRA
410 'CALL C,FETT    ;-> Fettschrift
420 'RRA
430 'CALL C,KURSIV  ;-> Kursivschrift
440 'RRA
450 'CALL C,UNTSTR  ;-> Unterstreichen
460 'RET            ;und fertig
470 '
480 ';** SUB Umwandlung in Duennschrift
490 'DUENN PUSH AF  ;Attribut merken
500 'PUSH HL        ;Startadr. merken
510 'LD C,ANZAHL    ;C=Anzahl Zeichen
520 'DNEXT1 LD B,8  ;B=Anzahl Reihen
530 'DNEXT2 LD A,(HL) ;Pixelreihe holen
540 'SRL A          ;rechts schieben
550 'AND (HL)       ;AND-verknuepfen
560 'LD (HL),A      ;wieder abspeichern
570 'INC HL         ;Adresse+1
580 'DJNZ DNEXT2    ;-> naechte Reihe
590 'DEC C          ;Zeichenanzahl-1
600 'JR NZ,DNEXT1   ;-> naechstes Z.
610 'POP HL         ;Startadr. holen
620 'POP AF         ;Attribut holen
630 'RET            ;fertig
640 '
650 ';** SUB Umwandlung in Fettschrift
660 'FETT PUSH AF   ;Attribut merken
670 'PUSH HL        ;Startadr. merken
680 'LD C,ANZAHL    ;C = Anzahl Zeichen
690 'FNEXT1 LD B,8  ;B = Anzahl Reihen
700 'FNEXT2 LD A,(HL) ;Pixelreihe holen
710 'SRL A          ;rechts schieben
720 'OR (HL)        ;OR-verknuepfen
730 'LD (HL),A      ;wieder abspeichern
740 'INC HL         ;Adresse+1
750 'DJNZ FNEXT2    ;-> naechste Reihe
760 'DEC C          ;Zeichenanzahl-1
770 'JR NZ,FNEXT1   ;-> naechstes Z.
780 'POP HL         ;Startadr. holen
790 'POP AF         ;Attribut holen
800 'RET            ;fertig
810 '
820 ';** SUB Umwandlung in Kursiv
830 'KURSIV PUSH HL ;Startadr. merken
840 'LD B,ANZAHL    ;B=Anzahl Zeichen
850 'KNEXT SRL (HL) ;1. Reihe zweimal
860 'SRL (HL)       ;rechts schieben
870 'INC HL
880 'SRL (HL)       ;2. Reihe einmal
890 'INC HL
900 'SRL (HL)       ;3. Reihe ebenfalls
910 'INC HL         ;4. und 5. Reihe
920 'INC HL         ;uebergehen
930 'INC HL
940 'SLA (HL)       ;6. Reihe und
950 'INC HL         ;7. Reihe einmal
960 'SLA (HL)       ;links schieben
970 'INC HL
980 'SLA (HL)       ;8. Reihe zweimal
990 'SLA (HL)
1000 'INC HL
1010 'DJNZ KNEXT     ;-> naechstes Z.
1020 'POP HL         ;Startadr. holen
1030 'RET            ;fertig
1040 '
1050 ';** SUB Zeichen unterstreichen
1060 'UNTSTR PUSH HL ;Startadr. merken
1070 'LD B,ANZAHL    ;B=Anzahl Zeichen
1080 'LD DE,8        ;Schrittweite
1090 'DEC HL         ;Startadr-1
1100 'UNEXT ADD HL,DE;Adr.+Schrittweite
1110 'LD (HL),&FF    ;Alle Bits setzen
1120 'DJNZ UNEXT     ;-> naechstes Z.
1130 'POP HL         ;Startadr. holen
1140 'RET            ;fertig