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 |