1 REM +++++++++++++++++++++++++++++++++ 2 REM ! Program .... RAK4 4 REM ! av Magnus Lundberg 5 REM ! {ndrat av Sven Wickberg <1384> 6 REM ! Minne 16 Kbytes 7 REM ! Ins{nt av Sven Wickberg 8 REM +++++++++++++++++++++++++++++++++ 10 REM ... save RAK4 84 10 18 SW f|r FX80 med elitestil m m 11 REM just printerrutin 84 05 01 SW 20 GOTO 390 30 REM +--------------------------------------+ 40 REM ! A$ - TEXTRAD ! 50 REM ! B$ - LOKAL GET, READ FILE ! 60 REM ! C$() - STYRTECKEN TILL PRINTER ! 70 REM ! D$ - DATUM ]]MMDD ! 80 REM ! D1$()- DATUM ]]MMDD I FILEN ! 90 REM ! D2$ - DATUM ]]MMDD K\RDAGEN ! 100 REM ! F$() - FILNAMN ! 110 REM ! S$ - STYRTECKEN I TEXTEN ! 120 REM ! A% - LOKAL SLASK ADRESS DATUM CUR ! 125 REM ! B% - LOKAL SLASK INSTR ! 130 REM ! C% - LOKAL SLASK DATUM CUR ! 132 REM ! C0% - L[GE P] MELLANSLAG ! 135 REM ! C1% - ANTAL EXTRA SKARVBITAR ! 137 REM ! C9% - FLAGGA f|rsta/andra varvet ! 140 REM ! D1% - LOKAL SLASK DATUM CUR ! 150 REM ! D2% - LOKAL SLASK DATUM CUR ! 160 REM ! E% - ERRCODE ! 170 REM ! F% - SPOOLING ! 175 REM ! G% - ANTAL STEG ATT SKARVA ! 178 REM ! H% - sidnr ! 180 REM ! I% - LOKAL LOOPVARIABEL, DATUM ! 190 REM ! L% - FILNUMMER PRINTER ! 200 REM ! M%() - MARGINAL ! 210 REM ! N% - LOOPVARIABEL, UPPLAGA ! 220 REM ! N1% - UPPLAGA ! 230 REM ! P% - ORDNINGSNR P] TEXTFIL ! 232 REM ! P$ - printerkod ! 235 REM ! Q% - FLAGGA F\R RAK H\GER ! 240 REM ! R% - AKTUELLT RADANTAL ! 245 REM ! R5% - RADL[NGD VID RAK H\GER 250 REM ! R9% - MAX RADER F\RE FORMFEED ! 260 REM ! S% - GETSVAR 1%=JA, 2%=NEJ ! 265 REM ! S0% - S\KNING B\RJAR ! 270 REM +-------------------------------------+ 280 DEFFNX%=PEEK(884%+2%*PEEK(65011%))+SWAP%(PEEK(885%+2%*PEEK(65011%))) 290 DEFFNY%=FNX%+PEEK(65012%) 300 REM --------------------------------------+ 310 GOTO 1050 : REM GET DATE ! 320 GOTO 920 : REM PREPARE AND TEST PRINTER ! 330 GOTO 1100 : REM OPEN FILE AND READ FIRST ! 340 GOTO 1130 : REM READ FILE ! 350 GOTO 1210 : REM TOP OF PAGE, HEADLINES ! 360 GOTO 1280 : REM GET YES/NO ! 370 GOTO 1370 : REM FELSIGNAL ! 380 REM --------------------------------------+ 390 DIM A$=256% : R%=0% : R9%=60% : REM Max rader/sida 395 DIM C$(20%),S$=20% 400 I%=120% : DIM F$(I%)=20%,M%(I%),D1$(I%)=6% 410 L%=2% : H1%=-1% : H2%=-1% : N1%=1% 420 Q$=CHR$(13%)+SPACE$(PEEK(623%))+CHR$(13%) 430 S$='DdCcEeGgRrXxTt8Pp' 440 S$(1%)='YES' : S$(2%)='NO' 450 C$(1%)=CHR$(14%) : REM D start DOUBLE WIDTH 460 C$(2%)=CHR$(20%) : REM d slut 470 C$(3%)=CHR$(15%) : REM C start CONDENSED 480 C$(4%)=CHR$(18%) : REM c slut 490 C$(5%)=CHR$(27%,69%) : REM E start EMPHASIZED 500 C$(6%)=CHR$(27%,70%) : REM e slut 510 C$(7%)=CHR$(27%,71%) : REM G start BOLD, DOUBLE PRINTING 520 C$(8%)=CHR$(27%,72%) : REM g slut 530 C$(9%)=CHR$(27%,50%) : REM R start NORMAL LINESPACING 540 C$(10%)=CHR$(27%,65%,10%)+CHR$(27%,72%) : REM r slut 545 GOSUB 5000 : REM fill{gg f|r FX 550 A%=65041% : GOSUB 1050 : D2$=D$ : REM DAGENS DATUM 560 REM === INIT PROGRAM === 570 ; CHR$(12%);'* SKRIVUT *'TAB(40%); 580 ; 'UTSKRIFT AV TEXTER 'D2$ : ; STRING$(PEEK(623%),61%) 590 GOSUB 920 : REM PREPARE AND TEST PRINTER 600 ; 'INFIL >'; : INPUTLINE B$ : B$=LEFT$(B$,LEN(B$)-2%) 610 IF B$='' P1%=P% : GOTO 700 : REM START PRINT 620 IF INSTR(1%,B$,'.')=0% B$=B$+'.TXT' : ; '.TXT'; 630 P%=P%+1% : IF LEN(B$)>12% 650 ELSE F$(P%)=B$ 640 ONERRORGOTO 650 : GOSUB 1100 : GOTO 660 : REM OPEN FILE AND READ FIRST 650 B$='Finns ej!' : P%=P%-1% : C%=5% : GOSUB 1370 : GOTO 690 : REM FELSIGNAL 660 IF LEN(A$)>9% IF LEFT$(A$,9%)='1 REM /*/' M%(P%)=0% : GOTO 690 : REM ORD 670 IF INSTR(1%,A$,'VMARG') M%(P%)=ASC(A$)-48% : GOTO 690 680 ONERRORGOTO 690 : M%(P%)=10% : ; ' VMARG'; : INPUT M%(P%) 690 ; : ; 'N[STA '; : GOTO 600 700 ; : REM - START PRINT - == MAIN LOOP == 710 FOR N%=1% TO N1% : REM UPPLAGAN 720 FOR P%=1% TO P1% : REM TEXTFILER 730 GOSUB 1100 : REM OPEN FILE AND READ FIRST 740 IF LEN(A$)>9% IF LEFT$(A$,9%)='1 REM /*/' A%=-1% 750 IF INSTR(1%,A$,'VMARG') A%=-1% 760 IF A%=-1% GOSUB 1130 : REM Read next 770 GOSUB 1220 : REM PRINT HEADINGS 780 REM == NEW FILE == 790 IF A$=SPACE$(LEN(A$)) A$='' 800 IF A$='^' GOSUB 1200 : GOTO 840 : REM NY SIDA 815 IF Q% G%=R5%-LEN(A$) : IF G%R9% A$='^' : GOTO 800 840 ONERRORGOTO 870 : GOSUB 1130 : REM READ NEXT 850 GOTO 790 860 REM == END OF FILE == 870 IF R% R%=0% : IF L% ; #L%CHR$(12%); 880 NEXT P% 890 H%=0% : NEXT N% : REM N[STA UTSKRIFT 900 ; 'READY' : END 910 REM ---------------------------- 920 REM - PREPARE AND TEST PRINTER - 925 P$='PR:VSA30A72.5' 930 ; 'P] PRINTER ?'; : GOSUB 1280 : IF S%=2% L%=0% : R9%=23% : GOTO 1000 935 ; 'Vad heter printern ('P$')'; : INPUT W$ : IF W$<>'' THEN P$=W$ 940 B$=' Printer not ready ' : C%=0% : GOSUB 1370 950 OPEN P$ ASFILE L% 960 ; #L%CHR$(13%); : ; CHR$(13%)TAB(20%)CHR$(13%); : POKE 65013%,0% 970 ONERRORGOTO 980 : ; 'Antal rader per sida ('R9%')'; : INPUT R9% 980 IF R9%<10% POKE 65011%,PEEK(65011%)-1% : ; Q$; : GOTO 970 983 ; 'RAK HMARG (N)?'; : GET B$ : ; B$ : Q%=0% : IF INSTR(1%,'YyJj',B$) 985 ELSE 990 985 Q%=1% : R5%=60% : ; 'HUR L]NG RAD ('R5%')'; : ONERRORGOTO 990 : INPUT R5% 990 ONERRORGOTO 1000 : ; 'Antal ex:'; : INPUT N1% 1000 REM - BEST[M RUBRIK - 1010 ; 'Fildatum p} utskriften? '; : GOSUB 1280 : IF S%=2% H1%=0% 1020 ; 'Sidnumrering ?'; : GOSUB 1280 : IF S%=2% H2%=0% : GOTO 1030 1023 ; 'Vilket sidnummer b|rjar vi med ? ('H%')'; : INPUT W$ : ONERRORGOTO 1030 : W%=VAL(W$) : H%=W%-1% 1030 RETURN 1040 REM ------------ 1050 REM - GET DATE - 1060 D$='' : REM A% SKALLL PEKA P] DATUM INTERN/ELLER FIL 1070 FOR I%=0% TO 2% : C%=PEEK(A%+I%) : D1%=(C% AND 240%)/16% : D2%=C% AND 15% 1080 D$=D$+CHR$(D1%+48%,D2%+48%) : NEXT I% : RETURN 1090 REM ---------------------- 1100 REM -OPEN AND READ FIRST - 1110 OPEN F$(P%) ASFILE 1% : A%=62973% : GOSUB 1050 : D1$(P%)=D$ 1120 REM ------------- 1130 REM - READ FILE - 1140 IF INP(16%)>127% 1140 1150 INPUTLINE #1%A$ : A$=LEFT$(A$,LEN(A$)-2%) 1160 I%=INSTR(1%,A$,CHR$(127%)) : IF I%=0% RETURN 1170 B$=MID$(A$,I%+1%,1%) 1180 A$=LEFT$(A$,I%-1%)+C$(INSTR(1%,S$,B$))+RIGHT$(A$,I%+3%) : GOTO 1160 1190 REM ----------------- 1200 REM - SKRIV NY SIDA - 1210 R%=0% : IF L% ; #L%CHR$(12%); : GOTO 1230 1220 IF L%=0% ; '(Ny sida)'; : POKE 65013%,0% : GET B$ : ; Q$; 1230 IF H1% R%=1% : A%=51%+H2%*6% : ; #L%TAB(A%)F$(P%)TAB(A%+13%)D1$(P%)'/'D2$; 1240 IF H2% R%=1% : H%=H%+1% : ; #L%TAB(70%)'Sid'H%; 1250 ; #L% : ; #L% : R%=R%+2% 1260 RETURN 1270 REM --------------- 1280 REM - (J/N) INPUT - 1290 POKE 65013%,0% 1300 ; ' (J) '; 1310 GET B$ : S%=(INSTR(1%,CHR$(13%)+' JjYyNn',B$)+5%)/6% 1320 IF S% 1350 1330 B$=CHR$(7%)+' FEL SVAR!' : C%=7% : GOSUB 1370 : REM FELSIGNAL 1340 ; STRING$(7%,8%); : GOTO 1290 : REM NYTT F\RS\K 1350 ; S$(S%)TAB(PEEK(623%)) : RETURN 1360 REM ------------- 1370 REM - FELSIGNAL - 1380 D1%=PEEK(65011%) : D2%=PEEK(65012%) 1390 A%=FNY% : ; SPACE$(C%)B$; 1400 FOR I%=C% TO C%+LEN(B$)-1% : POKE A%+I%,PEEK(A%+I%) OR 128% : NEXT I% 1410 POKE 65011%,D1%,D2% 1420 RETURN 1500 REM ----------- 1510 REM RAK H\GERMARG 1550 REM C9% flagga 1560 REM C1% extra skarvbit 1570 C1%=0% : C9%=0% : IF R%/2%=R%/2 C0%=1% ELSE C0%=R5%/2% : S0%=C0% 1580 FOR I%=1% TO G% 1590 B%=INSTR(C0%,A$,' ') : IF B%=0% IF C0%=1% 1650 ELSE C9%=-1% : C0%=1% : GOTO 1590 1595 IF B%<4% C0%=C0%+1% : GOTO 1590 : REM mellanslag i b|rj av raden duger ej 1600 IF C9%=1% IF B%>S0% C1%=C1%+1% : C9%=0% 1610 A$=LEFT$(A$,B%)+' '+RIGHT$(A$,B%+1%) 1620 IF LEN(A$)=R5% THEN 1650 1630 C0%=B%+3%+C1% 1640 NEXT I% 1650 RETURN 1660 REM ...koll om standardv{rden 1670 ; : ; : ; 'Standardutskrift:' 1680 ; : ; 'PRINTER -'R9%' rader/sida' 1690 ; 'RAK Hmarg' : Q%=1% : REM Q% flagga 1700 ; 'Vmarg ='M% 1710 ; 'Radl{ngd ='R5% 1720 ; : ; 'OK? (J)'; : GET B$ : ; B$ 1730 IF B$='N' OR B$='n' THEN RETURN 2000 ; 'RAK HMARG (N)?'; : GET B$ : ; B$ : Q%=1% : IF INSTR(1%,'YyJj',B$) 985 ELSE 990 2010 ; 'HUR L]NG RAD ('R5%')'; : ONERRORGOTO 150 : INPUT R5% 2020 ; 'HUR BRED VMARG ('M%')'; : ONERRORGOTO 170 : INPUT M% 2900 IF Q% GOSUB 1500 4990 REM --------------------------------- 5000 REM till{gg f|r Epson FX (1984)------------ 5010 C$(11%)=CHR$(27%,77%) : REM X start Elite-stil (X) 5015 C$(12%)=CHR$(27%,80%) : REM x Pica (Elite upph|r) 5020 C$(13%)=CHR$(27%,108%,10%) : REM T VMART i tab(10) 5030 C$(15%)=CHR$(27%,27%,81%,80%) : REM 8 80 tkn/rad 5050 C$(17%)=CHR$(27%,112%,1%) : REM P proportionell 5900 RETURN