home *** CD-ROM | disk | FTP | other *** search
- 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
-