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