home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
86xx
/
8601.d64
/
hardcopy.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
8KB
|
310 lines
1000 OPEN2,8,2,"HARDCOPY.OBJ,P,W"
1010 SYS9*4096
1020 ;*********************************
1030 ;* LOWSCREENHARDCOPY *
1040 ;* INCL. *
1050 ;* GRAFIK- UND REVERSZEICHEN *
1060 ;* EPSON/WIESEMANN & KOMP. *
1070 ;* VERSION 1.2 *
1080 ;* HARALD MEYER 21.05.1985 *
1090 ;*********************************
1100 .OPT O2 ; CODE AUF DISK
1110 *= $C000 ; STARTADRESSE
1120 ; ROUTINEN DES BETRIEBSSYTEMS
1130 ;**********************************
1140 ;
1150 OPEN = $FFC0 ; FILE OEFFNEN
1160 SETNAM = $FFBD ; FILENAMEN SETZEN
1170 SETFLS = $FFBA ; FILEPARAMETER
1180 PRINT = $FFD2 ; ZEICHEN AUSGEBEN
1190 CLRCH = $FFCC ; BILDSCH.-AUSGABE
1200 CHKOUT = $FFC9 ; AUSGABEGERAET
1210 CLOSE = $FFC3 ; FILE SCHLIESSEN
1220 STOP = $FFE1 ; STOPVEKTOR
1230 IRQEND = $EA31 ; KERNAL-IRQ-ROUT.
1240 LOVIDEO = $D018 ; VIDEORAM LO
1250 CHRGEN1 = $D000 ; 1.ZEICHENSATZ
1260 CHRGEN2 = $D800 ; 2.ZEICHENSATZ
1270 ;
1280 ; BENOETIGTE SPEICHERZELLEN
1290 ; *********************************
1300 ;
1310 CURSOR = 204 ; CURSOR AUS/AN
1320 IRQVEK = $0314 ; IEQ-VEKTOR
1330 TASTE = $C5 ; LETZTE TASTE
1340 F1 = 4 ; F1-MATRIXNUMMER
1350 CR = 13 ; CARRIAGE RETURN
1360 ESC = 27 ; ESCAPE
1370 ADRESSE = $F8 ; ZEICHENADRESSE
1380 ZEICHEN = $D6 ; ZEICHENCODE
1390 VIRAM = $15 ; ZEICHENADRESSE
1400 ZROM = $F9 ; ZEICHENGENERATOR
1410 MASKE = $9D ; BIT-ABFRAGE
1420 ;
1430 ; INTERRUPT INITIALISIEREN
1440 ; *********************************
1450 ;
1460 SEI ; IRQ VERHINDERN
1470 LDA #<START ; IRQ VEKTOR AUF
1480 LDY #>START ; DIESES PROGRAMM
1490 STA IRQVEK
1500 STY IRQVEK+1
1510 CLI ; IRQ FREIGEBEN
1520 RTS ; INIT. ENDE
1530 ;
1540 ;
1550 ; F1 GEDRUECKT, DANN START
1560 ; *********************************
1570 ;
1580 START LDA TASTE ; TASTENABFRAGE
1590 CMP #F1 ; TASTE = F1 "?"
1600 BNE L1 ; NEIN, DANN ENDE
1610 LDA #00 ; TASTENDRUCK
1620 STA TASTE ; LOESCHEN
1630 JSR HDCOPY ; PROGRAMMBEGINN
1640 L1 JMP IRQEND ; ZUM KERNAL-IRQ
1650 ;
1660 ;
1670 ; ZEROPAGE RETTEN
1680 ; *********************************
1690 ;
1700 HDCOPY LDX #$FF ; BYTE 255-0
1710 L2 LDA 0,X ; LADEN
1720 STA MEMORY,X ; UND SPEICHERN
1730 DEX ; NAECHSTES BYTE
1740 BNE L2 ; X=0, DANN ENDE
1750 LDA #01
1760 STA CURSOR ;AUSSCHALTEN
1770 ;
1780 ;
1790 ; DRUCKERFILE OEFFEN UND
1800 ; ZEILENABSTAND INITIALISIEREN
1810 ; *********************************
1820 LDA #126 ; FILENUMMER
1830 LDX #4 ; GERAETEADRESSE
1840 LDY #1 ; SEKUNDAERADRESSE
1850 JSR SETFLS ; PARAMETER SETZEN
1860 LDA #0 ; KEIN FILENAMEN
1870 JSR SETNAM ; NAMEN SETZEN
1880 JSR OPEN ; FILE OEFFNEN
1890 LDX #126 ; ALLE
1900 JSR CHKOUT ; AUSGABEN AUF #126
1910 ;
1920 ; DRUCKER AUF EINZEILIGEN ABSTAND
1930 LDA #ESC ; ESC-SEQUENZ-BEGINN
1940 JSR PRINT ; CHR$(27) AN DRUCKER
1950 LDA #"3" ; "3"+CHR$(24)
1960 JSR PRINT
1970 LDA #24
1980 JSR PRINT ; AN DRUCKER
1990 ;
2000 ; ZEIGER AUF VIDEORAM
2010 ; ********************************
2020 ;
2030 VIDEORAM LDA #$00
2040 LDY $288 ; VIDEORAMADRESSEN
2050 STA VIRAM ; UEBERGEBEN
2060 STY VIRAM+1
2070 ;
2080 ;
2090 ; ZEICHEN VOM SCREEN HOLEN,
2100 ; CHARAKTERGENERATOR LESEN UND
2110 ; ZEICHENMATRIX ZUSAMMENSETZEN
2120 ; *********************************
2130 ;
2140 LDX #25 ; ZEILENANZAHL
2150 ;
2160 ; AUSGABESCHLEIFE
2170 ; *********************************
2180 ;
2190 AUSG JSR STOP; STOPTASTE ABFRAGEN
2200 BEQ HDENDE ; GEDRUECKT,DANN ENDE
2210 ;
2220 ; IST ZEILE LEER "?"
2230 ; *********************************
2240 ;
2250 LDY #39
2260 L9 LDA (VIRAM),Y
2270 CMP #32
2280 BNE L10
2290 DEY
2300 BPL L9
2310 LDA #CR
2320 JSR PRINT
2330 JMP L11
2340 ;
2350 ; CHRGEN-ADRESSE HOLEN
2360 ; GROSS/KLEIN ODER GROSS/GRAFIC
2370 ; *********************************
2380 ;
2390 L10 JSR CHRTEST ;SCHRIFTMODUS-TEST
2400 ;
2410 ; DRUCKZEILE VORBEREITEN
2420 ; *********************************
2430 ;
2440 LDY #7 ; 6 CODES
2450 L3 LDA GRAFIK,Y ; ESC-SEQUENZ
2460 JSR PRINT ; SENDEN
2470 DEY ; NAECHSTER CODE
2480 BNE L3 ; FERTIG "?"
2490 ;
2500 ; NEUE ZEILE BEGINNEN
2510 ; *********************************
2520 ;
2530 LDY #0 ; ZEILE VON NEUEM
2540 ;
2550 ; ZEILE ABARBEITEN, 2. SCHLEIFE
2560 ; ZEICHEN HOLEN UND IM UP BEARBEI.
2570 ; *********************************
2580 ; ZEICHEN V. BILDSCH. HOLEN
2590 L5 LDA #0 ; ZEICHEN VON
2600 LDA (VIRAM),Y; BILDSCHIRM HOLEN
2610 STA ZEICHEN ; MERKEN
2620 JSR AUSWERT ; BEARBEITEN
2630 INY ; SPALTE ERHOEHEN
2640 CPY #40 ; ZEILENENDE "?"
2650 BNE L5 ; BILDSCH.-ENDE "?"
2660 ;
2670 ; NEUE ZEILE VORBEREITEN
2680 ; *********************************
2690 ;
2700 L11 LDA #40; 40 SPALTEN
2710 CLC ; ZEIGER AUF NAECHSTE ZEILE
2720 ADC VIRAM ; NEUE ZEILE SETZEN
2730 STA VIRAM
2740 BCC L12
2750 INC VIRAM + 1
2760 L12 DEX ; ZEILEN ERNIEDRIGEN
2770 BNE AUSG ; SCREEN ZU ENDE "?"
2780 HDENDE LDA #13; ZUM ENDE CR AN
2790 JSR PRINT ; DRUCKER SENDEN
2800 ;
2810 ; FERTIG, DANN FILE SCHLIESSEN
2820 ; *********************************
2830 ;
2840 LDA #126 ; FILENUMMER
2850 JSR CLOSE; DRUCKERDATEI SCHLIESSEN
2860 JSR CLRCH; CMD AUF SCREEN
2870 ;
2880 ;
2890 ; ZEROPAGE WIEDERHERSTELLEN
2900 ; *********************************
2910 ;
2920 LDX #$FF ; ZEROPAGE
2930 L4 LDA MEMORY,X; WIEDER
2940 STA $00,X ; HERSTELLEN
2950 DEX
2960 BNE L4
2970 ;
2980 RTS ; HARDCOPY ENDE
2990 ;
3000 ;
3010 ;
3020 ;
3030 ; CHARAKTERGENERATOR LESEN
3040 ; *********************************
3050 ;
3060 AUSWERT PHA; REGISTER RETTEN
3070 TXA
3080 PHA
3090 TYA
3100 PHA
3110 ;
3120 ; ADRESSE IM CHARAKTERRAM BERECH.
3130 ; = ZEICHENCODE * 8
3140 ; *********************************
3150 ;
3160 LDA ZEICHEN; ZEICHENCODE LADEN
3170 STA ADRESSE; ADRESSE IM ZEICHEN-
3180 LDA #0 ; ROM FESTSTELLEN
3190 STA ADRESSE+1
3200 ASL ADRESSE; ZEICHENCODE
3210 ROL ADRESSE+1
3220 ASL ADRESSE
3230 ROL ADRESSE+1
3240 ASL ADRESSE
3250 ROL ADRESSE+1 ; MAL 8
3260 LDA ADRESSE+1
3270 CLC ; UND
3280 ADC ZROM+1 ; ROMADRESSE
3290 STA ADRESSE+1 ; ADDIEREN
3300 ;
3310 ; CHARAKTERGEN. LESEN UND ZEICHEN-
3320 ; MATRIX FUER DRUCKER AUFBEREITEN
3330 ; *********************************
3340 ;
3350 LDX $01 ; SPEICHERSELEKT
3360 LDA #%10000000 ; BIT-MASKE
3370 STA MASKE ; SPEICHERN
3380 L14 LDA #$00 ; CODE
3390 PHA ; LOESCHEN
3400 LDY #7 ; 8 BYTES ABFRAGEN
3410 ;
3420 ; CHR-RAM EINSCHALTEN & BYTE LESEN
3430 ; *********************************
3440 ;
3450 L15 SEI ; IRQ SPERREN
3460 LDA #01:AND #251 ; ZEICHEN-ROM
3470 STA $01 ; SELEKTIEREN
3480 LDA (ADRESSE),Y ; CODE HOLEN
3490 AND MASKE ; MASKENVERGLEICH
3500 ;
3510 ; CHR-ROM WIEDER EINSCHALTEN
3520 ; *********************************
3530 ;
3540 STX $01 ; NORM SPEICHERKONF.
3550 CLI ; WIEDER HERSTELLEN
3560 BEQ L6
3570 PLA ; CODE LADEN UND
3580 CLC ; CODE LADEN UND
3590 ADC NWERT,Y ; BITWERT ZU CODE ADD.
3600 PHA ; UND MERKEN
3610 L6 DEY ; NAECHSTES BYTE
3620 BPL L15 ; 8 BITS GELESEN "?"
3630 PLA ; JA, DANN
3640 JSR PRINT ; AN DRUCKER
3650 LSR MASKE ; MASKE ERHOEHEN
3660 BCC L14 ; NAECHSTE PUNKTZEILE
3670 ;
3680 ; REGISTER WIEDER HOLEN
3690 ; *********************************
3700 ;
3710 PLA ; REGISTER WIEDER HOLEN
3720 TAY
3730 PLA
3740 TAX
3750 PLA
3760 RTS
3770 ;
3780 ; ANFANGSADRESSE DES CHARAKTERRAMS
3790 ; FESTSTELLEN UND MERKEN
3800 ; *********************************
3810 ;
3820 CHRTEST LDA #$00
3830 STA ZROM ; ZEICHENSATZADR. LO
3840 LDA LOVIDEO ; ZEICHENSATZ-PAGE
3850 AND #%00000010
3860 BNE L16
3870 LDA #>CHRGEN1 ;$D000
3880 STA ZROM + 1
3890 .BYT $2C
3900 L16 LDA #>CHRGEN2 ;$D800
3910 STA ZROM + 1
3920 RTS ; ZUM HAUPTPROGRAMM
3930 ;
3940 ;
3950 ;
3960 ;TABELLE 320 BITMUSTERDATEN
3970 GRAFIK .BYT 0,$01,$40
3980 ;
3990 ;EPSON AUF EINZELNADELANSTEUERUNG
4000 .BYT 4,"*",ESC,CR,24
4010 ;
4020 ;TABELLE FUER BIT-WERTIGKEITEN
4030 NWERT .BYT 128,64,32,16,8,4,2,1
4040 ;
4050 ;ZEICHENSATZ STARTADRESSEN
4060 MEMORY .BYT 0
4070 .END
4080 SYS49152