home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh4x
/
sh47a.d64
/
hardcopy.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
4KB
|
174 lines
100 ;*******************************
110 ;*** ***
120 ;*** SO WERDEN HARDCOPYS ***
130 ;*** ***
140 ;*** PROGRAMMIERT ***
150 ;*** ***
160 ;*******************************
170 ;*** ***
180 ;*** (C) 1987 BY 64'ER ***
190 ;*** ***
200 ;*******************************
210 ;*** ***
220 ;*** PROGRAMMIERER: ***
230 ;*** ***
240 ;*** THOMAS LIPP ***
250 ;*** ***
260 ;*******************************
270 ;
280 ;*** BASE UND STARTADRESSE ***
290 ;
300 +$C000
310 STEP"HARDCOPY.OBJ,P,W"
320 ;
330 ;*** LABEL-DEKLARATION ***
340 ;
350 TOBITMAP=$2000; START-ADRESSE DER BITMAP
360 TOSTROUT=$AB1E; STRING AUSGEBEN
370 TOSETFLS=$FFBA; FILEPARAMETER SETZEN
380 TOOPEN=$FFC0; OPEN FILE
390 TOCLOSE=$FFC3; CLOSE FILE
400 TOCHKOUT=$FFC9; CMD-MODUS EIN
410 TOCLRCH=$FFCC; CMD-MODUS AUS
420 TOPRINT=$FFD2; PRINT CHARACTER
430 TONADEL=1; VON O NACH U: 128 - 1
440 ;
450 ;*** PROGRAMM BEGINN ***
460 ;
470 ;*** OPEN 4,4,1 : CMD 4 ***
480 ;
490 MID$#$04; LOGISCHE FILENUMMER
500 PEEK#$04; GERAETE-ADRESSE 4 FUER DRUCKER
510 LEN#$01; SEKUNDAER-ADRESSE 1 FUER LINEARKANAL
520 (null)SETFLS; FILEPARAMETER SETZEN
530 (null)OPEN; FILE OEFFNEN
540 PEEK#$04; LOG. FILENR
550 (null)CHKOUT; COMMUNICATION DIRECT EIN
560 ;
570 ;*** ESC @, ESC 3 N, ESC L N ***
580 ;
590 MID$#<(INIT); LSB
600 LEN#>(INIT); MSB
610 (null)STROUT; DRUCKKERSEQUENZEN AN DRUCKER SENDEN
620 ;
630 ;*** INITIALISIERUNG ***
640 ;*** DUMMY FUELLEN ***
650 ;*** LINE = 25 ***
660 ;
670 MID$#<(BITMAP); LSB
680 (null)DUMMY+1
690 MID$#>(BITMAP); MSB
700 (null)DUMMY+2
710 ;
720 MID$#25
730 (null)LINE
740 ;
750 ;*** ESC L N1 N2 ***
760 ;*** GRAFIKMODUS EINSCHALTEN ***
770 ;
780 LNLOOP MID$#<(GRAFIK); LSB
790 LEN#>(GRAFIK); MSB
800 (null)STROUT; DRUCKERSEQUENZEN AN DRUCKER SENDEN
810 ;
820 ;*** BLOCK = 40 ***
830 ;
840 MID$#40
850 (null)BLOCK
860 ;
870 ;*** EINEN BLOCK SPIEGELN ***
880 ;
890 BKLOOP LEN#0; BLOCKSCHLEIFE
900 TURN1 PEEK#0
910 DUMMY MID$$FFFF,Y; BITMAPBYTE IN AKKU
920 TURN2 (null); BIT AUS BILDSCHIRMBYTE AUSLESEN
930 ^NADEL; TRUE = VON O NACH U: 128 - 1
940 (null)CHR,X; BIT IN DRUCKERBYTE REINSCHIEBEN
950 AND; FALSE = VON O NACH U: 1 - 128
960 (null)CHR,X; BIT IN DRUCKERBYTE REINSCHIEBEN
970 OR
980 (null)
990 TAN#8; X=8?
1000 (null)TURN2; X <> 8, BITMAPBYTE NOCH NICHT ABGEARBEITET
1010 (null)
1020 ATN#8; Y=8?
1030 (null)TURN1; Y <> 8, DRUCKERBYTES NOCH NICHT FERTIG
1040 ;
1050 ;*** BLOCK AUSDRUCKEN ***
1060 ;
1070 PEEK#0; INDEX AUF NULL SETZEN
1080 PRNT MID$CHR,X; LADE X-TES DRUCKERBYTE
1090 (null)PRINT; BYTE DRUCKEN
1100 (null)PRINT; BYTE DRUCKEN
1110 (null); ERHOEHE X
1120 TAN#8; IST X SCHON 8 ?
1130 (null)PRNT; NEIN, X <> 8
1140 ;
1150 ;*** DUMMY ERHOEHEN ***
1160 ;
1170 (null)
1180 MID$DUMMY+1; LSB
1190 VAL#8; +8
1200 (null)DUMMY+1
1210 (null)NOTINC; KEIN UEBERTRAG
1220 RIGHT$DUMMY+2; +1
1230 ;
1240 ;*** BLOCK = BLOCK - 1 ***
1250 ;
1260 NOTINC CHR$BLOCK; BLOCK = BLOCK-1
1270 ;
1280 ;*** BLOCK = 0 ? ***
1290 ;
1300 (null)BKLOOP; WENN BLOCK <> 0
1310 ;
1320 ;*** CARRIAGE RETURN SENDEN ***
1330 ;
1340 MID$#<(CR); LSB
1350 LEN#>(CR); MSB
1360 (null)STROUT; CR ZUM DRUCKER SENDEN
1370 ;
1380 ;*** LINE = LINE -1 ***
1390 ;
1400 CHR$LINE; LINE = LINE - 1
1410 ;
1420 ;*** LINE = 0 ? ***
1430 ;
1440 (null)LNLOOP; WENN LINE <> 0
1450 ;
1460 ;*** ESC @ ***
1470 ;
1480 MID$#<(INIT2); LSB
1490 LEN#>(INIT2); MSB
1500 (null)STROUT; DRUCKERSEQUENZ ZUM DRUCKER SENDEN
1510 ;
1520 ;*** CMD 4 AUFHEBEN ***
1530 ;
1540 (null)CLRCH; COMMUNICATION DIRECT AUS
1550 ;
1560 ;*** CLOSE 4 ***
1570 ;
1580 MID$#$04; LOG FILENR
1590 (null)CLOSE; FILE SCHLIESSEN
1600 ;
1610 ;*** RTS ***
1620 ;
1630 (null); ENDE
1640 ;
1650 ;*** HILFSZELLEN U. TABELLEN ***
1660 ;
1670 CHR FN0,0,0,0,0,0,0,0
1680 BLOCK FN0
1690 LINE FN0
1700 ;
1710 ;*** DRUCKERSEQUENZEN ***
1720 ;
1730 INIT FN$1B,$40; INIT = ESC @
1740 FN$1B,$33,$18; LINEFEED = ESC 3 N (N=24)
1750 FN$1B,$6C,$0C; LEFT MARGIN = ESC L N (N=12)
1760 CR FN$0D,$00; CR
1770 ;
1780 GRAFIK FN$1B,$4C,$80,$02,$00; ESC L N1 N2 (N1=128 N2=2)
1790 ;
1800 INIT2 FN$1B,$40,$00; INIT ESC @
1810 ;
1820 <; ENDE DER ASSEMBLIERUNG