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