1 REM Ins{nd av Per Svebeck <2635> 1984-12-29 17.11.11 10 ! *********************************************************************** 20 ! *********************************************************************** 30 ! ** ** 40 ! ** PROCEDUR HRDUMP.BAC J FORNAEUS VER 3.1 JAN 1983 ** 50 ! ** P SVEBECK VER 3.2 DEC 1984 ** 60 ! ** ** 70 ! ** Dumpar utvald grafikbild p} EPSON MX82/2400 Baud alt 1200 Baud ** 80 ! ** Provad p} ABC800M ** 90 ! *********************************************************************** 100 ! ********************************************************************** 110 ! 120 ! Man v{ljer det omr}de p} sk{rmen som skall dumpas till skrivare genom 130 ! att l{gga en ruta runt det. Bilden p}verkas inte av proceduren. 140 ! 150 ! *** OBS! programmet kan ej laddas direkt eftersom det d} krockar med 160 ! ! sig sj{lvt. F|rst m}ste h|gsta adress f|r basic {ndras till 170 ! ! 59500. Detta g|rs innan proceduren laddas genom att man d} 180 ! ! g|r POKE 65594,MOD(59500,256),INT(59500/256). Detta g|rs 190 ! ! i huvudprogrammet f|re CHAIN "HRDUMP.BAC" eller med separata 200 ! ! proceduren DUMPLOAD.BAC. Notera ocks} att i assembler HRTILLPR 210 ! ! finns 2 rader i slutet d{r man v{ljer baudrate mht till 220 ! ! skrivarens inst{llning. Den ena skall vara kommentar. 230 ! 240 ! 250 ! 260 ! 270 ! ****** INITIERA PROCEDUREN ******************************************* 280 ! 290 INTEGER : EXTEND 300 Xmax%=239% : Ymax%=239% ! St{ll in utg}ngsv{rden f|r rutan 310 Omrval%=59500% ! Adress till assembler som g|r omr}desval 320 Hrtillpr%=Omrval% ! Adress till assembler som dumpar omr}det till skrivare 330 ! B}da assemblerprocedurerna l{ggs p} samma st{lle (inte samtidigt) 340 ! 350 Slut%=0% 360 Tabulera%=9% 370 Kommando%=27% 380 T|msk{rm%=12% 390 ]terl{mna%=1% 400 S{ttabulator%=68% 410 V{ljradavst}nd%=65% 420 ]terst{llradavst}nd%=50% ! ]terst{ller normalt radavst}nd 430 Skrivare%=200% ! Filnummer f|r skrivare 440 Radl{ngd%=96% ! G{ller f|r EPSON MX82 450 ! 460 DIM Lucka%(23%,9%) ! Matris f|r zoomluckfunktion 470 OPEN "PR:VSA50A72.5" AS FILE Skrivare% ! Initiera skrivare 480 FOR I%=59500% TO 61500% STEP 10% : POKE I%,0%,0%,0%,0%,0%,0%,0%,0%,0%,0% : NEXT I% 490 ! Rensa minnet d{r assembler skall lagras 500 ! 510 ! 520 ! 530 ! ******* SKRIV UT INSTRUKTIONSTEXT ************************************* 540 ! 550 ; CHR$(T|msk{rm%);"*** DUMPNING FR]N BILDSK[RM TILL SKRIVARE ***" 560 ; 570 ; 580 ; "Du kan flytta rutans h|rn med siffertangenterna p} lilla tangentbordet" 590 ; "till h|ger. 8 {r upp}t, 9 {r snett upp }t h|ger och s} vidare." 600 ; "Ytan under rutan kommer med bland det som skrivs ut." 610 ; 620 ; "Tangent 5 byter h|rn mellan |vre v{nstra och nedre h|gra." 630 ; "I nedre h|gra h|rnet finns en siffra som anger st|rsta m|jliga" 640 ; "f|rstoring (zoom) i x-led f|r det omr}de du valt." 650 ; "En pipsignal ljuder d} man g}r mellan omr}den med olika maximal xzoom." 660 ; 670 ; "Bilden f|rst|rs inte av programmet." 680 ; "N{r du valt omr}det klart: tryck p} RETURN s} f}r du v{lja f|rstoring." 690 ; 700 ; 710 ; 720 ; 730 ; "Tryck p} n}gon tangent d} du l{st denna text f{rdigt." 740 GET Klar$ ! V{nta tills texten {r l{st 750 ! 760 ! 770 ! 780 ! ******* LADDA OMRVAL SOM RITAR RUTAN ********************************** 790 ! 800 POKE 59500%,0%,0%,0%,0%,0%,0%,0%,0%,62%,0%,50%,115%,232%,58%,109%,232% 810 POKE 59516%,50%,113%,232%,58%,110%,232%,50%,114%,232%,205%,157%,234%,205%,39%,233%,33% 820 POKE 59532%,226%,255%,126%,230%,128%,32%,8%,205%,85%,234%,205%,85%,234%,24%,237%,62% 830 POKE 59548%,0%,33%,226%,255%,119%,33%,227%,255%,126%,214%,13%,32%,4%,205%,157%,234% 840 POKE 59564%,201%,214%,36%,32%,12%,205%,180%,233%,205%,145%,233%,205%,39%,234%,195%,136% 850 POKE 59580%,232%,61%,32%,9%,205%,180%,233%,205%,39%,234%,195%,136%,232%,61%,32%,12% 860 POKE 59596%,205%,180%,233%,205%,110%,233%,205%,39%,234%,195%,136%,232%,61%,32%,9%,205% 870 POKE 59612%,145%,233%,205%,39%,234%,195%,136%,232%,61%,32%,6%,205%,250%,233%,195%,136% 880 POKE 59628%,232%,61%,32%,9%,205%,110%,233%,205%,39%,234%,195%,136%,232%,61%,32%,12% 890 POKE 59644%,205%,215%,233%,205%,145%,233%,205%,39%,234%,195%,136%,232%,61%,32%,9%,205% 900 POKE 59660%,215%,233%,205%,39%,234%,195%,136%,232%,61%,194%,136%,232%,205%,215%,233%,205% 910 POKE 59676%,110%,233%,205%,39%,234%,195%,136%,232%,2%,7%,0%,58%,111%,232%,33%,109% 920 POKE 59692%,232%,150%,95%,22%,0%,6%,8%,62%,0%,33%,64%,2%,237%,82%,250%,64% 930 POKE 59708%,233%,60%,16%,248%,50%,108%,232%,198%,48%,50%,36%,233%,62%,23%,33%,83% 940 POKE 59724%,255%,119%,62%,78%,33%,82%,255%,119%,58%,38%,233%,33%,108%,232%,237%,161% 950 POKE 59740%,40%,9%,33%,36%,233%,1%,2%,0%,205%,11%,0%,58%,108%,232%,50%,38% 960 POKE 59756%,233%,201%,62%,239%,33%,113%,232%,237%,161%,200%,62%,0%,33%,115%,232%,237% 970 POKE 59772%,161%,32%,10%,58%,111%,232%,33%,109%,232%,150%,214%,5%,200%,58%,113%,232% 980 POKE 59788%,60%,50%,113%,232%,201%,62%,0%,33%,113%,232%,237%,161%,200%,62%,0%,33% 990 POKE 59804%,115%,232%,237%,161%,40%,10%,58%,111%,232%,33%,109%,232%,150%,214%,5%,200% 1000 POKE 59820%,58%,113%,232%,61%,50%,113%,232%,201%,62%,239%,33%,114%,232%,237%,161%,200% 1010 POKE 59836%,62%,0%,33%,115%,232%,237%,161%,32%,10%,58%,112%,232%,33%,110%,232%,150% 1020 POKE 59852%,214%,5%,200%,58%,114%,232%,60%,50%,114%,232%,201%,62%,0%,33%,114%,232% 1030 POKE 59868%,237%,161%,200%,62%,0%,33%,115%,232%,237%,161%,40%,10%,58%,112%,232%,33% 1040 POKE 59884%,110%,232%,150%,214%,5%,200%,58%,114%,232%,61%,50%,114%,232%,201%,62%,0% 1050 POKE 59900%,33%,115%,232%,237%,161%,40%,18%,58%,109%,232%,50%,113%,232%,58%,110%,232% 1060 POKE 59916%,50%,114%,232%,62%,0%,50%,115%,232%,201%,58%,111%,232%,50%,113%,232%,58% 1070 POKE 59932%,112%,232%,50%,114%,232%,62%,1%,50%,115%,232%,201%,205%,157%,234%,62%,0% 1080 POKE 59948%,33%,115%,232%,237%,161%,40%,16%,58%,113%,232%,50%,111%,232%,58%,114%,232% 1090 POKE 59964%,50%,112%,232%,205%,157%,234%,201%,58%,113%,232%,50%,109%,232%,58%,114%,232% 1100 POKE 59980%,50%,110%,232%,205%,157%,234%,201%,0%,0%,33%,115%,232%,62%,0%,237%,161% 1110 POKE 59996%,40%,18%,58%,113%,232%,214%,4%,50%,83%,234%,58%,114%,232%,214%,4%,50% 1120 POKE 60012%,84%,234%,24%,14%,58%,113%,232%,60%,50%,83%,234%,58%,114%,232%,60%,50% 1130 POKE 60028%,84%,234%,62%,4%,71%,58%,83%,234%,79%,58%,84%,234%,50%,230%,234%,198% 1140 POKE 60044%,3%,50%,231%,234%,121%,50%,232%,234%,197%,205%,238%,234%,193%,12%,16%,233% 1150 POKE 60060%,201%,58%,109%,232%,50%,121%,235%,58%,111%,232%,50%,122%,235%,58%,110%,232% 1160 POKE 60076%,50%,120%,235%,205%,194%,235%,58%,111%,232%,50%,232%,234%,58%,110%,232%,50% 1170 POKE 60092%,230%,234%,58%,112%,232%,50%,231%,234%,205%,238%,234%,58%,112%,232%,50%,120% 1180 POKE 60108%,235%,58%,109%,232%,50%,121%,235%,58%,111%,232%,50%,122%,235%,205%,194%,235% 1190 POKE 60124%,58%,109%,232%,50%,232%,234%,205%,238%,234%,201%,1%,2%,3%,4%,5%,6% 1200 POKE 60140%,7%,0%,58%,232%,234%,230%,3%,203%,39%,60%,71%,62%,192%,5%,40%,4% 1210 POKE 60156%,203%,63%,24%,249%,50%,233%,234%,33%,0%,0%,34%,236%,234%,58%,230%,234% 1220 POKE 60172%,50%,236%,234%,221%,33%,236%,234%,6%,6%,221%,203%,0%,38%,221%,203%,1% 1230 POKE 60188%,22%,16%,246%,58%,232%,234%,203%,63%,203%,63%,95%,22%,0%,42%,236%,234% 1240 POKE 60204%,25%,34%,236%,234%,58%,231%,234%,33%,230%,234%,150%,60%,50%,235%,234%,33% 1250 POKE 60220%,236%,234%,221%,33%,233%,234%,42%,236%,234%,17%,234%,234%,1%,1%,0%,205% 1260 POKE 60236%,253%,127%,58%,234%,234%,221%,174%,0%,50%,234%,234%,33%,234%,234%,237%,91% 1270 POKE 60252%,236%,234%,1%,1%,0%,205%,253%,127%,42%,236%,234%,17%,64%,0%,25%,34% 1280 POKE 60268%,236%,234%,58%,235%,234%,61%,50%,235%,234%,32%,203%,201%,1%,2%,3%,4% 1290 POKE 60284%,5%,6%,7%,0%,8%,0% 1300 POKE 60354%,33%,0%,0%,34%,236%,234%,34%,128%,235%,34%,126%,235%,58%,121%,235%,60% 1310 POKE 60370%,50%,121%,235%,58%,120%,235%,50%,126%,235%,221%,33%,126%,235%,6%,6%,221% 1320 POKE 60386%,203%,0%,38%,221%,203%,1%,22%,16%,246%,58%,121%,235%,203%,63%,203%,63% 1330 POKE 60402%,42%,126%,235%,95%,22%,0%,25%,34%,236%,234%,58%,122%,235%,203%,63%,203% 1340 POKE 60418%,63%,42%,126%,235%,95%,22%,0%,25%,34%,128%,235%,58%,121%,235%,230%,3% 1350 POKE 60434%,203%,39%,60%,71%,62%,255%,5%,40%,4%,203%,63%,24%,249%,50%,123%,235% 1360 POKE 60450%,58%,122%,235%,230%,3%,203%,39%,60%,71%,62%,0%,5%,40%,5%,55%,203% 1370 POKE 60466%,31%,24%,248%,50%,124%,235%,42%,236%,234%,17%,234%,234%,1%,1%,0%,205% 1380 POKE 60482%,253%,127%,58%,234%,234%,33%,123%,235%,174%,50%,234%,234%,33%,234%,234%,237% 1390 POKE 60498%,91%,236%,234%,1%,1%,0%,205%,253%,127%,42%,128%,235%,237%,91%,236%,234% 1400 POKE 60514%,237%,82%,34%,125%,235%,200%,42%,128%,235%,17%,234%,234%,1%,1%,0%,205% 1410 POKE 60530%,253%,127%,58%,234%,234%,33%,124%,235%,174%,50%,234%,234%,33%,234%,234%,237% 1420 POKE 60546%,91%,128%,235%,1%,1%,0%,205%,253%,127%,42%,125%,235%,17%,1%,0%,237% 1430 POKE 60562%,82%,34%,125%,235%,200%,42%,236%,234%,35%,17%,130%,235%,237%,75%,125%,235% 1440 POKE 60578%,205%,253%,127%,33%,130%,235%,58%,125%,235%,71%,126%,47%,119%,35%,16%,250% 1450 POKE 60594%,237%,91%,236%,234%,19%,33%,130%,235%,237%,75%,125%,235%,205%,253%,127%,201% 1460 ! 1470 ! 1480 ! 1490 ! ****** BEST[M OMR]DE SOM SKALL DUMPAS ***************************** 1500 ! 1510 FGCTL 72% ! Sl} p} grafikbilden 1520 ! FGCTL 3% ! Sl} p} grafikbilden ALLA F[RGER 1530 ; CHR$(T|msk{rm%); ! Rensa sk{rmen fr}n text 1540 ! 1550 Dummy%=FNZoomlucka%(H{mta%) ! Skapa lucka f|r zoominformation 1560 ! 1570 POKE Omrval%+1%,Xmin%,Ymin%,Xmax%,Ymax% 1580 ! Ladda rutans startv{rden 1590 ! 1600 Dummy%=CALL(Omrval%+8%) ! Anropa assembler som utf|r val av omr}de 1610 ! 1620 Dummy%=FNZoomlucka%(]terl{mna%) ! ]terl{mna luckan 1630 ! 1640 Xzoom%=PEEK(Omrval%) ! H{mta maximalt till}ten xzoom som ber{knats av omrval 1650 ! 1660 Xmin%=PEEK(Omrval%+1%) : Ymin%=PEEK(Omrval%+2%) 1670 Xmax%=PEEK(Omrval%+3%) : Ymax%=PEEK(Omrval%+4%) 1680 ! H{mta omr}dets gr{nser fr}n omrval 1690 ! 1700 ! 1710 ! 1720 ! ****** BEST[M ZOOM **************************************************** 1730 ! 1740 FGCTL 0% ! Sl{ck grafikbild 1750 ; CHR$(T|msk{rm%);"Rutan har f}tt f|ljande koordinater:" 1760 ; "Xmin=";Xmin%,"Ymin=";Ymin%,"Xmax=";Xmax%,"Ymax=";Ymax% 1770 ; 1780 ! 1790 ; "Skall bilden inom dessa koordinater skrivas ut? (ja)" : INPUT ""Svar$ 1800 IF LEN(Svar$)=0% THEN 1820 1810 IF MID$(Svar$,1%,1%)="N" OR MID$(Svar$,1%,1%)="n" THEN 3290 1820 ! 1830 ; CHR$(T|msk{rm%);"Maximal xzoom {r ber{knad till";Xzoom% 1840 ; "Yzoom";Xzoom%;"f|resl}s." 1850 ON ERROR GOTO 3450 ! G} till felrutin om svaret inneh}ller bokst{ver 1860 PRINT "Vilken xzoom |nskas? (";Xzoom%;") " 1870 INPUT ""Svar$ 1880 IF LEN(Svar$)=0% THEN 1930 1890 IF VAL(Svar$)>Xzoom% THEN ; "Maximalt till}ten xzoom {r";Xzoom% : GOTO 1860 1900 IF VAL(Svar$)<1% THEN ; "Minsta till}tna zoom {r 1." : GOTO 1860 1910 Xzoom%=VAL(Svar$) 1920 ! 1930 Yzoom%=Xzoom% 1940 ; "Vilken yzoom |nskas? (";Yzoom%;") " 1950 INPUT ""Svar$ 1960 IF LEN(Svar$)=0% THEN 2000 1970 IF VAL(Svar$)<1% OR VAL(Svar$)>8% THEN ; "Max till}ten yzoom=8 och min=1" : GOTO 1940 1980 Yzoom%=VAL(Svar$) 1990 ! 2000 Maxtab%=INT((1150%-((Xmax%-Xmin%+1%)*Xzoom%*2%))/12%) 2010 IF Tabulator%>Maxtab% THEN Tabulator%=Maxtab% 2020 ; "Hur m}nga positioner skall bilden flyttas till h|ger? (";Tabulator%;")" 2030 ; 2040 ; "Maximalt kan bilden flyttas";Maxtab%;"positioner }t h|ger." 2050 ; 2060 ; "Sidan best}r av";Radl{ngd%;"positioner och bildens storlek {r med nuvarande" 2070 ; "xzoom (";Xzoom%;") ";Radl{ngd%-Maxtab%;"positioner." 2080 ; 2090 ; "Om du svarar med n eller N f}r du g|ra nytt val av omr}de." 2100 ; 2110 ; "Flytta bilden p} pappret (<0> -";Maxtab%;") positioner"; 2120 INPUT ': 'Svar$ 2130 IF LEN(Svar$)=0% THEN 2170 2140 IF LEFT$(Svar$,1%)="N" OR LEFT$(Svar$,1%)="n" THEN 1510 2150 IF VAL(Svar$)>-1% AND VAL(Svar$)<=Maxtab% THEN Tabulator%=VAL(Svar$) ELSE 2020 2160 ! 2170 ; CHR$(T|msk{rm%) ! T|m bildsk{rm 2180 FGCTL 1% ! Sl} p} grafikbild 2190 ! 2200 ! 2210 ! 2220 ! ****** LADDA HRTILLPR SOM DUMPAR FR]N HR-MINNE TILL PRINTER ************ 2230 ! 2240 POKE 59500%,1%,2%,3%,4%,5%,6%,0%,237%,83%,124%,232%,205%,72%,238%,201%,17% 2250 POKE 59516%,17%,0%,17%,0% 2260 POKE 61000%,42%,113%,232%,41%,58%,108%,232%,17%,0%,0%,235%,25%,61%,32%,252%,34% 2270 POKE 61016%,126%,232%,42%,124%,232%,1%,64%,0%,17%,128%,232%,205%,253%,127%,34%,124% 2280 POKE 61032%,232%,58%,111%,232%,33%,128%,232%,6%,4%,60%,61%,40%,9%,203%,38%,203% 2290 POKE 61048%,38%,230%,255%,5%,24%,244%,221%,33%,198%,232%,58%,109%,232%,87%,58%,108% 2300 POKE 61064%,232%,50%,123%,232%,58%,113%,232%,79%,203%,6%,221%,203%,0%,22%,230%,255% 2310 POKE 61080%,221%,35%,203%,6%,221%,203%,0%,22%,203%,14%,203%,14%,230%,255%,221%,43% 2320 POKE 61096%,21%,32%,229%,58%,109%,232%,87%,221%,35%,221%,35%,58%,123%,232%,61%,50% 2330 POKE 61112%,123%,232%,32%,212%,58%,108%,232%,50%,123%,232%,13%,40%,13%,203%,38%,203% 2340 POKE 61128%,38%,230%,255%,16%,195%,6%,4%,35%,24%,190%,58%,112%,232%,61%,50%,112% 2350 POKE 61144%,232%,194%,90%,238%,58%,110%,232%,61%,250%,243%,238%,33%,198%,232%,237%,75% 2360 POKE 61160%,126%,232%,203%,38%,237%,161%,234%,234%,238%,24%,236%,205%,247%,238%,201%,33% 2370 POKE 61176%,198%,232%,237%,75%,126%,232%,9%,43%,62%,0%,237%,169%,226%,9%,239%,40% 2380 POKE 61192%,249%,202%,195%,239%,3%,33%,198%,232%,237%,67%,126%,232%,17%,118%,237%,19% 2390 POKE 61208%,19%,19%,19%,62%,0%,50%,208%,239%,62%,24%,50%,196%,239%,62%,100%,50% 2400 POKE 61224%,197%,239%,58%,197%,239%,61%,50%,197%,239%,32%,28%,34%,198%,239%,237%,83% 2410 POKE 61240%,200%,239%,237%,67%,202%,239%,205%,209%,239%,42%,198%,239%,237%,91%,200%,239% 2420 POKE 61256%,237%,75%,202%,239%,195%,20%,239%,58%,208%,239%,60%,60%,50%,208%,239%,237% 2430 POKE 61272%,160%,226%,170%,239%,237%,160%,226%,170%,239%,43%,43%,62%,0%,237%,161%,3% 2440 POKE 61288%,35%,32%,8%,43%,237%,161%,3%,32%,2%,24%,7%,62%,24%,50%,196%,239% 2450 POKE 61304%,24%,176%,58%,196%,239%,61%,50%,196%,239%,32%,167%,58%,208%,239%,214%,48% 2460 POKE 61320%,50%,208%,239%,34%,198%,239%,237%,83%,200%,239%,237%,67%,202%,239%,205%,209% 2470 POKE 61336%,239%,205%,245%,239%,42%,198%,239%,237%,91%,200%,239%,237%,75%,202%,239%,195% 2480 POKE 61352%,20%,239%,34%,198%,239%,237%,83%,200%,239%,237%,67%,202%,239%,205%,209%,239% 2490 POKE 61368%,42%,198%,239%,237%,91%,200%,239%,237%,75%,202%,239%,201%,0%,0%,0%,0% 2500 POKE 61384%,0%,0%,0%,0%,32%,32%,32%,32%,0%,197%,229%,33%,118%,237%,54%,27% 2510 POKE 61400%,35%,54%,76%,35%,58%,208%,239%,119%,62%,0%,237%,161%,40%,46%,54%,0% 2520 POKE 61416%,58%,208%,239%,198%,4%,71%,17%,3%,0%,237%,82%,24%,8%,197%,229%,62% 2530 POKE 61432%,4%,71%,33%,204%,239%,14%,32%,205%,28%,240%,62%,16%,211%,33%,219%,33% 2540 POKE 61448%,230%,32%,238%,32%,32%,241%,237%,163%,40%,2%,24%,235%,62%,0%,50%,208% 2550 ! 2560 ! V{lj r{tt baudrate. Normalt 2400 2570 POKE 61464%,239%,225%,193%,201%,213%,22%,30%,62%,30%,61%,32%,253%,21%,32%,248%,209% ! 2400 baud 2580 ! 2590 ! Denna POKE-sats v{ljs om man vill k|ra 1200 Baud ist{llet 2600 ! POKE 61464%,239%,225%,193%,201%,213%,22%,40%,62%,40%,61%,32%,253%,21%,32%,248%,209% ! 1200 baud 2610 ! 2620 POKE 61480%,201% 2630 ! 2640 ! 2650 ! 2660 ! ****** BEER[KNA VARIABLER ********************************************* 2670 ! 2680 ; #Skrivare% CHR$(Kommando%,V{ljradavst}nd%,(INT(8%/Yzoom%))*Yzoom%); 2690 ! S{nd radavst}nd till skrivare 2700 ! 2710 ; #Skrivare% CHR$(Kommando%,S{ttabulator%,Tabulator%,Slut%); 2720 ! St{ll in |nskad tabulering 2730 ! 2740 Linjer%=INT(8%/Yzoom%) 2750 ! Ber{kna antal linjer p} sk{rmen som utg|r en rad till skrivaren 2760 ! 2770 Fyll%=MOD(8%,Yzoom%) 2780 ! Antal linjer som skall fyllas med blanka sist i varje rad 2790 ! 2800 Bredd%=Xmax%-Xmin%+1% ! Valda omr}dets bredd i pixels 2810 Start%=INT(Xmin%/4%)+64%*Ymin% ! Startadress i bildminnet 2820 Bort%=MOD(Xmin%,4%) ! Antal pixels som skiftas bort f|rst i varje ord 2830 ! 2840 Slutrad%=INT((Ymax%-Ymin%)/Linjer%)+1% 2850 ! Ber{kna sista rad (dvs antal rader) 2860 ! 2870 IF MOD(Ymax%-Ymin%+1%,Linjer%)=0% THEN J{mntdelbart%=-1% ELSE J{mntdelbart%=0% 2880 ! Best{m om Linjer% g}r j{mnt upp i antalet linjer 2890 ! 2900 ! 2910 ! 2920 ! ****** LOOP SOM RITAR \NSKADE RADER *********************************** 2930 ! 2940 FOR Rad%=1% TO Slutrad% 2950 ! 2960 ; #Skrivare% CHR$(Tabulera%); ! Flytta bilden } h|ger om s} valts 2970 ! 2980 IF Rad%=Slutrad% AND NOT J{mntdelbart% THEN Linjer%=MOD(Ymax%-Ymin%+1%,Linjer%) 2990 ! Om inte det totala antalet linjer {r j{mnt delbart med Linjer% ska 3000 ! sista raden omfatta f{rre linjer 3010 ! 3020 IF Rad%=Slutrad% AND NOT J{mntdelbart% THEN Fyll%=8%-Yzoom%*Linjer% 3030 ! Linjerna i sista raden m}ste flyttas upp till radens topp, annars 3040 ! blir det en lucka mellan sista linjerna och resten 3050 ! 3060 POKE Hrtillpr%,Xzoom%,Yzoom%,Fyll%,Bort%,Linjer%,Bredd% 3070 ! Ladda in parametrar till assembler 3080 ! 3090 ; CUR(1%,1%) "NU RITAS RAD";Rad%;"AV";Slutrad%;"RADER"; 3100 ! Ange vilken rad som {r under utskrift 3110 ! 3120 Dummy%=CALL(Hrtillpr%+7%,Start%) 3130 ! Anropa assembler som h{mtar radens data ur bildminnet och skriver raden 3140 ! 3150 PRINT #Skrivare% ! Skicka radframmatning 3160 ! 3170 Start%=Start%+64%*Linjer% 3180 ! Uppdatera startadressen i HR-minnet 3190 ! 3200 NEXT Rad% 3210 ! 3220 ! 3230 ! 3240 ! ****** AVSLUTA PROCEDUREN ********************************************** 3250 ! 3260 FOR Tut%=1% TO 100% : Z%=INP(5%) : NEXT Tut% ! Signalera att utskrift klar 3270 FGCTL 0% ! Sl{ck grafikbild 3280 ! 3290 ; CHR$(T|msk{rm%);"Skall fler bilder skrivas ut? (nej) "; 3300 INPUT ""Svar$ : IF LEN(Svar$)=0% THEN 3350 3310 IF LEFT$(Svar$,1%)="J" OR LEFT$(Svar$,1%)="j" THEN 790 3320 ! 3330 ; #Skrivare% CHR$(Kommando%,]terst{llradavst}nd%); 3340 ! 3350 ON ERROR GOTO 3380 3360 CHAIN "START" ! Ladda in huvudprogrammet 3370 ! Felhanterare 3380 IF ERRCODE=21% THEN ; "Kan inte ladda annnat program" 3390 END 3400 ! 3410 ! 3420 ! 3430 ! ****** FELHANTERARE **************************************************** 3440 ! 3450 IF ERRCODE=210% THEN RESUME 1850 ELSE ; CHR$(12%,7%,7%,7%);"FEL NR ";ERRCODE;"HAR UPPST]TT." : STOP 3460 ! 3470 ! 3480 ! 3490 ! ****** FUNKTION SOM SKAPAR LUCKA F\R ZOOMTEXT ************************ 3500 ! 3510 DEF FNZoomlucka%(Riktning%) ! Skapar lucka s} att zoominformationen syns 3520 ; CUR(23%,72%) "XZOOM"; ! Skriv texten i luckan, siffran ges av OMRVAL 3530 FOR X%=215% TO 237% 3540 FOR Y%=2% TO 10% 3550 IF Riktning%=H{mta% THEN Lucka%(X%-214%,Y%-1%)=FGPOINT(X%,Y%) : FGPOINT X%,Y%,0% 3560 ! Spara undan info i luckan 3570 ! 3580 IF Riktning%=]terl{mna% THEN FGPOINT X%,Y%,Lucka%(X%-214%,Y%-1%) 3590 ! ]terst{ll info till luckan 3600 ! 3610 NEXT Y% 3620 NEXT X% 3630 RETURN Dummy% 3640 FNEND