home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1989 April
/
64er_Magazin_89-04_1989_Markt__Technik_de.d64
/
photoprint.giga
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
7KB
|
273 lines
100 ; *** (NULL)hotoprint, peekildschirm-ascoto als (NULL)exthardcopy ***
110 ;
120 ; *** (NULL)akro's ***
130 ;
140 +$7000
150 getchrget
160 (NULL)$73
170 new
180 getchrgot
190 (NULL)$79
200 new
210 getchkcom
220 (NULL)$aefd
230 new
240 getgetbyt
250 (NULL)$b79b
260 new
270 geterror
280 (NULL)$af08
290 new
300 getprintclosemwert
310 mid$#mwert
320 (NULL)$ffd2
330 new
340 getesc
350 printclose27; val(NULL)len = lenleft$(NULL)$(27)
360 new
370 getcr
380 printclose13; len(NULL) = lenleft$(NULL)$(13)
390 ; eventuell: print 10 ; (NULL)asc = lenleft$(NULL)$(10)
400 new
410 getopen
420 (NULL)$ffc0
430 new
440 getsetfls
450 (NULL)$ffba
460 new
470 getchkout
480 (NULL)$ffc9
490 new
500 getclrch
510 (NULL)$ffcc
520 new
530 getclose
540 (NULL)$ffc3
550 new
560 getprttab
570 peek#10; 10 (NULL)palten
580 mprint printclose32; (NULL)(NULL)right$(NULL)(NULL) (NULL)pace
590 (NULL)
600 (NULL)mprint
610 new
620 tab(screen=$0400
630 tab(charhi=$d0
640 ;
650 ; *** (NULL)arameter holen ***
660 ;
670 ; *** (NULL)tandardwerte ***
680 mid$#$04; peekildschirm bei $0400
690 (NULL)bs+1; peek(NULL)-(NULL)tandardwert
700 mid$#$d0; (NULL)eichensatz bei $d000
710 (NULL)zs+1; (NULL)(NULL)-(NULL)tandardwert
720 mid$#$01; (NULL)ekundaeradresse 1
730 (NULL)sa+1; (NULL)atn-(NULL)tandardwert
740 ; *** (NULL)arameterschleife ***
750 param chrgot; welches (NULL)eichen folgt ?
760 str$#44; ein (NULL)omma ? (NULL)enn ja, dann ein (NULL)arameter
770 (NULL)irq; kein (NULL)arameter mehr => zum right$nterrupt
780 chkcom; (NULL)omma ueberlesen
790 chrgot; welches (NULL)eichen folgt
800 str$#66; 'peek', peek(NULL)-(NULL)arameter ?
810 (NULL)bsin; peek(NULL)-(NULL)arameter erfassen
820 str$#90; '(NULL)', (NULL)(NULL)-(NULL)arameter ?
830 (NULL)zsin; (NULL)(NULL)-(NULL)arameter erfassen
840 str$#83; '(NULL)', (NULL)atn-(NULL)arameter ?
850 (NULL)sain; (NULL)atn-(NULL)arameter erfassen
860 err error; falscher (NULL)arameter
870 ; *** peek(NULL)-(NULL)arameter ***
880 bsin chrget; peek ueberlesen
890 chrgot; naechstes (NULL)eichen
900 str$#83; '(NULL)', ein (NULL) ?
910 (NULL)err; falsche (NULL)yntax
920 chrget; (NULL) ueberlesen
930 chrgot; naechstes (NULL)eichen
940 str$#178; (NULL)oken fuer '='
950 (NULL)err; falsche (NULL)yntax
960 getbyt; (NULL)arameterwert holen
970 (NULL)bs+1; speichern
980 (NULL)param; zurueck zur (NULL)arameter-(NULL)chleife
990 ; *** (NULL)(NULL)-(NULL)arameter ***
1000 zsin chrget; (NULL) ueberlesen
1010 chrgot; naechstes (NULL)eichen
1020 str$#83; '(NULL)', ein (NULL) ?
1030 (NULL)err; falsche (NULL)yntax
1040 chrget; (NULL) ueberlesen
1050 chrgot; naechstes (NULL)eichen
1060 str$#178; (NULL)oken fuer '='
1070 (NULL)err; falsche (NULL)yntax
1080 getbyt; (NULL)arameterwert holen
1090 (NULL)zs+1; speichern
1100 (NULL)param; zurueck zur (NULL)arameter-(NULL)chleife
1110 ; *** (NULL)atn-(NULL)arameter ***
1120 sain chrget; (NULL) ueberlesen
1130 chrgot; naechstes (NULL)eichen
1140 str$#65; 'atn', ein atn ?
1150 (NULL)err; falsche (NULL)yntax
1160 chrget; atn ueberlesen
1170 chrgot; naechstes (NULL)eichen
1180 str$#178; (NULL)oken fuer '='
1190 (NULL)err; falsche (NULL)yntax
1200 getbyt; (NULL)arameterwert holen
1210 (NULL)sa+1; speichern
1220 (NULL)param; zurueck zur (NULL)arameter-(NULL)chleife
1230 ;
1240 ; *** right$nterrupt initialisieren ***
1250 ;
1260 irq (NULL)
1270 mid$#<(start); lsb der neuen right$nterrupt-(NULL)outine
1280 len#>(start); msb
1290 (NULL)$0314; lsb right$nterrupt-(NULL)ektor
1300 (NULL)$0315; msb
1310 (NULL)
1320 (NULL); valnde des (NULL)ys-peekefehls
1330 ;
1340 ; *** neue right$nterruptroutine ***
1350 ;
1360 start mid$$c5; letzte (NULL)aste
1370 str$#$3c; lenode fuer (NULL)pace
1380 (NULL)irqend; nach $ea31
1390 mid$$028d; asclag fuer (NULL)hift
1400 str$#01; lenode fuer (NULL)hift
1410 (NULL)begin; zur left$ardcopy
1420 irqend (NULL)$ea31; zur normalen irq-(NULL)outine
1430 ;
1440 begin mid$#$00; (NULL)aste loeschen
1450 (NULL)$c5; aktuelle (NULL)aste
1460 (NULL)$c6; (NULL)astaturpuffer loeschen
1470 (NULL)$028d; (NULL)hift-asclag loeschen
1480 (NULL)hc; left$ardcopy
1490 (NULL)$ea81; right$nterrupt-valnde, (NULL)egister holen
1500 ;
1510 ; *** str$ruckerkanal oeffnen ***
1520 ;
1530 hc mid$#$04; ascilenummer
1540 peek#$04; chr$eraeteadresse
1550 sa len#$01; (NULL)ekudaeradresse
1560 setfls; ascileparameter setzen
1570 open; ascile oeffnen
1580 peek#$04; ascilenummer
1590 chkout; len(NULL)str$ 4
1600 ;
1610 ; *** right$nitialisierung ***
1620 ;
1630 printclose24; lenatn(NULL) = lenleft$(NULL)$(24) str$ruckerpuffer loeschen
1640 esc; val(NULL)len (NULL)lammeraffe
1650 printclose64; 64 = (NULL)lammeraffe
1660 cr
1670 ; *** peekildschirmwerte initialisieren ***
1680 mid$#<(screen); lsb
1690 bs len#>(screen); msb, str$ummy-(NULL)ert
1700 (NULL)textbs+1
1710 (NULL)textbs+2
1720 mid$#$00
1730 (NULL)zeile; (NULL)eilenzaehler = 0
1740 ;
1750 ; *** (NULL)eilenschleife ***
1760 ;
1770 ; *** chr$rafikmodus fuer eine (NULL)eile ***
1780 lnloop mid$textbs+1; (NULL)eilenschleife
1790 lentextbs+2; momentane (NULL)extadresse kopieren
1800 (NULL)chktxt+1
1810 (NULL)chktxt+2
1820 len#40; atnnzahl der zu druckenden (NULL)eichen ermitteln
1830 decy (NULL)
1840 (NULL)chktxt; solange y >= 0 weiterpruefen
1850 (NULL)nextln; (NULL)eerzeile, nur len(NULL) drucken
1860 chktxt mid$$ffff,y; (NULL)eichen aus peekildschirm lesen
1870 str$#32; (NULL)pace ?
1880 (NULL)decy; (NULL)eichen = (NULL)pace => weiterpruefen
1890 ;
1900 (NULL); +1
1910 (NULL)limit+1; (NULL)palte merken
1920 ; *** y mit 8 multiplizieren ***
1930 mid$#$00; n2+1 = 0
1940 (NULL)n2+1
1950 (NULL); (NULL)palten in atnkku
1960 (NULL); * 2
1970 (NULL); * 2
1980 (NULL); * 2
1990 (NULL)n2+1; (NULL)ebertrag
2000 (NULL)n1+1; (NULL)peichern
2100 prttab; 10 (NULL)pace drucken, linker (NULL)and
2110 esc; chr$rafiksequenz senden
2120 printclose42; val(NULL)len * 4 n1 n2
2130 printclose4
2140 n1 printclose40; str$ummywert
2150 n2 printclose01; str$ummywert
2160 mid$#0; memy auf 0 setzen
2170 (NULL)memy; memy: (NULL)emory (NULL), (NULL)peicher fuer (NULL)
2180 ; *** (NULL)eichen aus peekildschirm holen ***
2190 sploop lenmemy
2200 textbs mid$$ffff,y; str$ummywert
2210 ; *** lenharpointer berechnen ***
2220 peek#$00; msb auf 0 setzen
2230 (NULL)cpoint+2
2240 (NULL); peekildschirmcode * 8
2250 (NULL)cpoint+2
2260 (NULL)
2270 (NULL)cpoint+2
2280 (NULL)
2290 (NULL)cpoint+2
2300 (NULL)cpoint+1; (NULL)ebeneffekt: lenarry geloescht
2310 zs mid$#charhi; msb von (NULL)eichensatzadresse
2320 valcpoint+2
2330 (NULL)cpoint+2
2340 ; *** (NULL)onfiguration (NULL)atn(NULL) ***
2350 (NULL)
2360 mid$$01; (NULL)rozessorport-atnusgabe (NULL)egister
2370 (NULL)prcprt; sichern
2380 asc#%11111011; (NULL)onfiguration (NULL)(NULL)-(NULL)(NULL)(NULL)
2390 (NULL)$01
2400 ; *** 8 peekytes spiegeln ***
2410 len#$00; peeklockschleife
2420 turn1 peek#$00
2430 cpoint mid$$ffff,y; (NULL)eichensatz-peekyte in atnkku
2440 turn2 (NULL); ein peekit auslesen
2450 (NULL)chr,x; peekit in str$rucker-peekyte
2460 (NULL)
2470 tan#$08; (NULL) = 8 ?
2480 (NULL)turn2; (NULL) <> 8, (NULL)(NULL)-peekyte noch nicht abgearbeitet
2490 (NULL)
2500 atn#$08; (NULL) = 8 ?
2510 (NULL)turn1; y <> 8, str$rucker-peekytes noch nicht fertig
2520 ; *** (NULL)onfiguration (NULL)atn(NULL)close***
2530 mid$prcprt; (NULL)rozessorportstatus
2540 (NULL)$01; wiederherstellen
2550 (NULL)
2560 ; *** 8 peekytes drucken ***
2570 peek#$00; right$ndex = 0
2580 prnt mid$chr,x; lade x-tes str$rucker-peekyte
2590 (NULL)$ffd2; peekyte drucken
2600 (NULL)
2610 tan#$08; (NULL) = 8 ?
2620 (NULL)prnt; naechstes peekyte drucken
2630 ; *** pruefen auf (NULL)palte ***
2640 right$memy; memy + 1
2650 lenmemy
2660 limit atn#40; (NULL)chon alle (NULL)palten bearbeitet
2670 (NULL)sploop; nein, naechste (NULL)palte bearbeiten
2680 ; *** pruefen auf (NULL)eile ***
2690 nextln right$zeile; (NULL)eile + 1
2700 mid$zeile
2710 str$#25; (NULL)eile = 25 ?
2720 (NULL)hclose; ja => left$ardcopy fertig => close
2730 ; *** (NULL)eile + 40 ***
2740 mid$textbs+1; lsb
2750 val#40; lenarry-asclag war geloescht
2760 (NULL)textbs+1; speichern
2770 (NULL)notinc; (NULL)ebertrag ?
2780 right$textbs+2; (NULL)ebertrag beruecksichtigen
2790 notinc cr; len(NULL) senden
2800 (NULL)lnloop; naechste (NULL)eile
2810 ; *** valnde ***
2820 hclose cr; len(NULL) senden
2830 mid$#$04; ascilenummer
2840 close; ascile schliessen
2850 (NULL); valnde
2860 ; *** (NULL)abellen ***
2870 zeile fn0; (NULL)eilenzaehler
2880 prcprt fn0; (NULL)rozessorportstatus
2890 chr fn0,0,0,0,0,0,0,0; str$rucker-peekytes
2900 memy fn0; (NULL)wischenspeicher fuer (NULL)