1 REM Ins{nd av Bo Kullmar <1789> 1985-01-06 11.04.29
2 ! +++++++++++++++++++++++++++++++++++
3 ! Program .... PARPR.800
4 ! Utg}va 2.4 1985-01-06
5 ! av (c) Bo Kullmar
9 ! Ins{nt av Bo Kullmar, medlem 1789
10 ! [ndrar parametrar till ABCTERM
11 ! +++++++++++++++++++++++++++++++++++
12 EXTEND : INTEGER
100 COMMON Parv24$=16,Parpr$=15,Dimbuff,Pf(32),Pf$(32)=81,Meny$(32)=14
110 COMMON Logginnr,Medlemsnr,L|senord$=5,Prom.,Duplex$=11,Enh$=4
120 COMMON Pftkn$(32)=1,Tscreen$=2048,Curpos,]ter,Dator$=8,Inifil$=16,Pfpekare
130 COMMON R|d$=1,Gul$=1,Bl}$=1,Gr|n$=1,Cyan$=1,Magneta$=1,Dubel$=1
300 DIM In$=80,Pftext$=1000
500 IF Dator$='' THEN CHAIN 'START.BAC'
1000 Z=FN[ndrterm
1010 ; Gul$ 'Programmet SETUP laddas och exikveras!' : CHAIN Enh$+'SETUP.BAC'
2000 ! Fibeskrivning ABCTERM.INI
2010 ! Parameter f|r V24 16 Bytes $
2020 ! Parameter f|r PR: 15 Bytes $
2030 ! Buffertstolek 2 Bytes %
2035 ! Rutinnr f|r 1-32 1 Byte per rutin i ASCII
2040 ! Poster 1-32
2060 ! Antal tecken 1 Byte i ASCII
2065 ! Ev nr p} Pf 1 Byte i ASCII
2070 ! Str{ng 80 Bytes $
2080 ! Menytext 14 Bytes $
3000 DEF FN[ndrterm
3010 ; CHR$(12) Gul$ Dubel$ '[ndring av printerparametrar' : ; : ; : ;
3020 Rutin=FNVal{nrterm
3030 ON Rutin GOTO 3040,3050,3060,3070,3080,3090,3100,3110,3120,3130
3040 Z=FN[ndratermtyp : GOTO 3010
3050 Z=FNTecken : GOTO 3010
3060 Z=FNPerfskip : GOTO 3010
3070 Z=FNAntrader : GOTO 3010
3080 Z=FNFfsim : GOTO 3010
3090 Z=FNCrlf : GOTO 3010
3100 Z=FN[ndraparitet : GOTO 3010
3110 Z=FN[ndrahastighet : GOTO 3010
3120 Z=FNDcd : GOTO 3010
3130 ; Gul$ 'Skall parameterv{rdena sparas p} disk? (J/N) '; : GET Svar$ : ; Svar$
3140 Svar$=FNStora$(Svar$) : IF Svar$='J' THEN 3150 ELSE 3190
3150 OPEN Enh$+Inifil$ AS FILE 10
3160 POSIT #10,16
3170 PUT #10,Parpr$
3180 CLOSE 10 : RETURN 0
3190 ; Cyan$ 'Parameterna finns kvar tills n{sta {ndring eller tills programmet avslutas!'
3200 Z=FNDelay(2000) : RETURN 0
3210 FNEND
4000 DEF FNDelay(Y.) LOCAL I.
4010 WHILE I.95 THEN X$=X$+CHR$(A AND 223) ELSE X$=X$+CHR$(A)
5040 NEXT J
5050 RETURN X$
5060 FNEND
6000 DEF FNVal{nrterm LOCAL Norm$=15
6001 Norm$='Ange (1-8,K) ' : Spec$='Ange (1-9,K) '
6010 ; Cyan$ 'Detta kan du g|ra:' : ; : ;
6015 ! ; Parpr$
6020 ; Gul$ '1 [ndra printertyp'
6060 ; Gul$ '2 [ndra antal tecken per rad'
6061 ; Gul$ '3 [ndra antal rader som skall hoppas |ver vid sidslut'
6062 ; Gul$ '4 [ndra antal rader per sida'
6063 ; Gul$ '5 [ndra FF-simulering'
6064 ; Gul$ '6 [ndra behandling av CR och LF'
6080 ; Gul$ '7 [ndra paritet'
6090 ; Gul$ '8 [ndra |verf|ringshastighet'
6100 IF Prom.=7.2 OR Prom.=7.21 THEN ; Gul$ '9 [ndra test p} DCD vid OPEN/PREPARE'
6110 ; Gul$ 'K Klar' : ; : IF Prom.=7.21 THEN ; Gul$ Spec$; ELSE ; Gul$ Norm$;
6120 GET Svar$ : Svar$=FNStora$(Svar$) : ; Svar$;
6130 IF (Prom.=7.2 OR Prom.=7.21) AND INSTR(1,'123456789K',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 6120
6135 IF Prom.=7.1 AND INSTR(1,'12345678K',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 6120
6140 ; : ; : IF Svar$='K' THEN RETURN 10 ELSE RETURN VAL(Svar$)
6150 FNEND
7000 DEF FN[ndratermtyp LOCAL Svar$=1
7010 ; CHR$(12) Gul$ Dubel$ '[ndring av printertyp' : ; : ; : ;
7020 ; Cyan$ 'Dessa typer kan v{ljas:' : ; : ;
7030 ; Gul$ 'C Skrivare typ Centronics'
7031 ; Gul$ 'P Skrivare typ SP1'
7032 ; Gul$ 'U Skrivare typ UART'
7040 ; Gul$ 'V Skrivare typ simulerad UART' : ; : ;
7050 ; Cyan$ 'V{lj C/P/U/V ! (' MID$(Parpr$,4,1) ') '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=MID$(Parpr$,4,1)
7060 ; FNStora$(Svar$); : Svar$=FNStora$(Svar$) : IF INSTR(1,'CPUV',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 7050
7070 MID$(Parpr$,4,1)=Svar$
7080 RETURN 0
7090 FNEND
8000 DEF FN[ndraparitet LOCAL Svar$=1,De$=1,Pk,Par$=1,Xon,Alt$=4,Tkn
8010 ; CHR$(12) Gul$ Dubel$ '[ndring av paritet' : ; : ; : ;
8020 De$=MID$(Parpr$,5,1)
8030 ; Cyan$ 'V{lj typ av paritet!' : ;
8040 ; Gul$ 'Even (j{mn), Odd (udda), Mark eller Space'
8050 ; Gul$ 'Svara E,O,M eller S! (' De$ ') '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=De$
8060 ; FNStora$(Svar$); : Svar$=FNStora$(Svar$) : Tkn=INSTR(1,'EOMS',Svar$)
8065 IF Tkn=0 THEN ; ,R|d$ 'Fel val!' : GOTO 8050
8070 MID$(Parpr$,5,1)=Svar$
8080 RETURN 0
8090 FNEND
8300 DEF FNFfsim LOCAL Svar$=1,De$=1,D$=1
8310 Ff$='BFJNDHLP' : Ejff$='AEIMCGKO' : D$=MID$(Parpr$,9,1)
8320 IF INSTR(1,'BFJNDHLP',MID$(Parpr$,9,1))<>0 THEN De$='J' ELSE De$='N'
8330 IF De$='J' THEN Pek=INSTR(1,Ff$,D$) ELSE Pek=INSTR(1,Ejff$,D$)
8340 ; CHR$(12) Gul$ Dubel$ '[ndring FF-simulering' : ; : ; : ;
8350 ; Cyan$ 'FF-simulering inneb{r att printerrutinen skickar ett antal LF (Line Fedd)'
8360 ; Cyan$ 'f|r att komma till n{sta sida. Ej FF-simulering betyder att printerrutinen'
8370 ; Cyan$ 'skickar FF (Form Feed) som sedan tas om hand i skrivaren som g|r sid-'
8380 ; Cyan$ 'frammatning.' : ;
8390 ; Gul$ '\nskas FF-simulering? (' De$ ') '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=De$
8400 ; FNStora$(Svar$); : Svar$=FNStora$(Svar$) : IF INSTR(1,'JN',Svar$)=0 THEN ; ,,R|d$ 'Fel val!' : GOTO 8390
8410 IF Svar$='J' THEN MID$(Parpr$,9,1)=MID$(Ff$,Pek,1)
8420 IF Svar$='N' THEN MID$(Parpr$,9,1)=MID$(Ejff$,Pek,1)
8430 RETURN 0
8440 FNEND
9000 DEF FNPerfskip LOCAL Svar$=1,Def$=1
9010 Def$=MID$(Parpr$,8,1)
9020 ; CHR$(12) Gul$ Dubel$ 'Perforeringsskip' : ; : ; : ;
9030 ; Gul$ 'Ange hur m}nga rader som skall hoppas |ver vid sidslut'
9110 ; Gul$ 'V{lj 0-9 (' Def$ ') ! '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=Def$ : ; Svar$;
9120 IF INSTR(1,'0123456789',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 9110
9130 MID$(Parpr$,8,1)=Svar$
9140 RETURN 0
9150 FNEND
9200 DEF FNAntrader LOCAL Svar$=2,Def$=2
9210 Def$=MID$(Parpr$,10,2)
9220 ; CHR$(12) Gul$ Dubel$ 'Antal rader per sida' : ; : ; : ;
9230 ; Gul$ 'Ange antal rader per sida.'
9240 ; Gul$ 'V{lj 1-99 (' Def$ ') ! '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=Def$ : ; Svar$ : GOTO 9290
9250 IF INSTR(1,'0123456789',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 9240
9260 ; Svar$; : GET Svar2$ : ; Svar2$; : Svar$=Svar$+Svar2$
9270 IF INSTR(1,'0123456789',Svar2$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 9240
9280 IF Svar$='00' THEN ; ,R|d$ 'Fel val!' : GOTO 9240
9290 ; : ; : MID$(Parpr$,10,2)=Svar$
9300 RETURN 0
9310 FNEND
11200 DEF FNTecken LOCAL Svar$=1,Def$=1
11210 Def$=MID$(Parpr$,7,1)
11220 ; CHR$(12) Gul$ Dubel$ 'Antal tecken per rad' : ; : ; : ;
11230 ; Gul$ 'Val nr','Antal tecken per rad' : ;
11240 ; Cyan$ '1',' 40'
11250 ; Cyan$ '2',' 72'
11260 ; Cyan$ '3',' 80'
11270 ; Cyan$ '4','120'
11280 ; Cyan$ '5','132'
11290 ; Cyan$ '6','158'
11300 ; Cyan$ '7','254' : ;
11310 ; Gul$ 'V{lj 1-7 (' Def$ ') ! '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=Def$ : ; Svar$;
11320 IF INSTR(1,'1234567',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 11310
11330 MID$(Parpr$,7,1)=Svar$
11340 RETURN 0
11350 FNEND
13000 DEF FNCrlf LOCAL De$=2,D$=1,Ja$=8,Nej$=8,Pek
13010 De$=MID$(Parpr$,9,1)
13020 IF INSTR(1,'IJKLMNOP',De$)<>0 THEN D$='J'
13030 IF INSTR(1,'ABCDEFGH',De$)<>0 THEN D$='N'
13040 Ja$='IJKLNMOP' : Nej$='ABCDEFGH'
13050 IF D$='J' THEN Pek=INSTR(1,Ja$,De$) ELSE Pek=INSTR(1,Nej$,De$)
13060 ; CHR$(12) Gul$ Dubel$ 'Behandling av CR och LF' : ; : ; : ;
13070 ; Cyan$ 'V{lj om CR mottages skall LF generas. ';
13080 ; Cyan$ 'V{lj (' D$ ') ! '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=D$
13090 Svar$=FNStora$(Svar$) : ; Svar$;
13100 IF INSTR(1,'JN',Svar$)=0 THEN ; R|d$,'Fel val!' : GOTO 13080
13110 IF Svar$='J' THEN MID$(Parpr$,9,1)=MID$(Ja$,Pek,1)
13120 IF Svar$='N' THEN MID$(Parpr$,9,1)=MID$(Nej$,Pek,1)
13130 ; ! : ; Parpr$
13140 De$=MID$(Parpr$,9,1)
13150 IF INSTR(1,'CGKODHLP',De$)<>0 THEN D$='J'
13160 IF INSTR(1,'AEIMBFJN',De$)<>0 THEN D$='N'
13170 Ja$='CGKODHLP' : Nej$='AEIMBFJN'
13180 IF D$='J' THEN Pek=INSTR(1,Ja$,De$) ELSE Pek=INSTR(1,Nej$,De$)
13190 ; : ; : ; : ; Cyan$ 'V{lj CRLF vid radslut ';
13200 ; Cyan$ 'V{lj (' D$ ') ! '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=D$
13210 Svar$=FNStora$(Svar$) : ; Svar$;
13220 IF INSTR(1,'JN',Svar$)=0 THEN ; R|d$,'Fel val!' : GOTO 13200
13230 IF Svar$='J' THEN MID$(Parpr$,9,1)=MID$(Ja$,Pek,1)
13240 IF Svar$='N' THEN MID$(Parpr$,9,1)=MID$(Nej$,Pek,1)
13250 RETURN 0
13260 FNEND
14000 DEF FN[ndrahastighet
14010 ; CHR$(12) Gul$ Dubel$ '[ndring av |verf|ringshastigheten' : ; : ;
14050 ; : Z=FNHastigheter
14060 ; Gul$ 'V{lj |verf|ringshastighet';
14070 De$=MID$(Parpr$,13,1) : ; Gul$ ' (' De$ ') ! '; : GET Svar$ : IF Svar$=CHR$(13) THEN Svar$=De$
14075 ; Svar$
14080 IF INSTR(1,'012345678',Svar$)=0 THEN ; ,R|d$ 'Fel val!' : GOTO 14050
14090 MID$(Parpr$,13,1)=Svar$ : RETURN 0
14100 FNEND
15000 DEF FNHastigheter
15005 ; Gul$ 'M|jliga hastigheter:' : ;
15010 ; Cyan$ 'Val: Hastighet (pbs)' : ;
15020 ; Cyan$ ' 0 75'
15030 ; Cyan$ ' 1 110'
15040 ; Cyan$ ' 2 300'
15050 ; Cyan$ ' 3 600'
15060 ; Cyan$ ' 4 1200'
15070 ; Cyan$ ' 5 2400'
15080 ; Cyan$ ' 6 4800'
15090 ; Cyan$ ' 7 9600'
15100 ; Cyan$ ' 8 19200' : ;
15110 RETURN 0
15120 FNEND
16000 DEF FNDcd LOCAL De$=1,D$=1,Ja$=8,Nej$=8,Pek
16010 De$=MID$(Parpr$,15,1)
16020 IF INSTR(1,'BFJNDHLP',De$)<>0 THEN D$='J'
16030 IF INSTR(1,'AEIMCGKO',De$)<>0 THEN D$='N'
16040 Ja$='BFJNDHLP' : Nej$='AEIMCGKO'
16050 IF D$='J' THEN Pek=INSTR(1,Ja$,De$) ELSE Pek=INSTR(1,Nej$,De$)
16060 ; CHR$(12) Gul$ Dubel$ 'DCD test vid OPEN/PEPARE?' : ; : ; : ;
16070 ; Cyan$ 'DCD test inneb{r att test sker vid OPEN/PREARE om signal finns p}'
16080 ; Cyan$ 'pinne 8 i datorns printerkontakt. Om signal saknas ges felmeddelande nr 42.'
16090 ; : ; : ; Cyan$ 'Skall DCD test ske';
16100 ; Cyan$ ' (' D$ ') ? '; : GET Svar$ : Svar$=FNStora$(Svar$) : IF Svar$=CHR$(13) THEN Svar$=D$
16110 ; Svar$;
16120 IF INSTR(1,'JN',Svar$)=0 THEN ; R|d$,'Fel val!' : GOTO 16100
16130 IF Svar$='J' THEN MID$(Parpr$,15,1)=MID$(Ja$,Pek,1)
16140 IF Svar$='N' THEN MID$(Parpr$,15,1)=MID$(Nej$,Pek,1)
16150 ; : ; : RETURN 0
16160 FNEND