home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 12
/
CD_ASCQ_12_0294.iso
/
maj
/
2364
/
minilab
/
scope2.bas
< prev
next >
Wrap
BASIC Source File
|
1994-02-15
|
57KB
|
1,339 lines
REM W. Prévost 1993 : Minilab : SCOPE
DECLARE SUB IconRefaire (a, B)
DECLARE SUB IconGraf (a, B)
DECLARE SUB IconSchema (a, B)
DECLARE SUB IconDataBook (a, B)
DECLARE SUB IconQuitter (a, B)
DECLARE SUB Clic (ClickDelay%)
DECLARE SUB Mouse (OnOff%)
DECLARE SUB ResetMouse ()
DECLARE SUB GetMouse ()
DECLARE SUB MouseSpeed (Curseur%)
DECLARE SUB ReadData ()
DECLARE SUB SaisieNum (Num$, lo%, X%, Y%)
DECLARE FUNCTION Interr% (Num%, AX%, Bx%, CX%, DX%)
DIM SHARED MS%(45)
CLEAR , , 6000
ReadData
DIM SHARED a, B, X%, Y%, B%, key$
REM
SCREEN 12: DEFINT A-E, G-Z: DEFLNG F
OPEN "Minilab\SETUP.INI" FOR INPUT AS #1
SEEK #1, 1
INPUT #1, CoulBarreTitre, CoulLettresTitre, CoulZoneTravail
INPUT #1, VitesseSouris, ClickDelay
CLOSE #1
debuter:
ON ERROR GOTO TraiteErreur
REM ----------------------- Interface Générateur Sigx ---------------
debut: cf = 3: GOSUB BarTitre
Y = 44: c = 0: X = 245: GOSUB generat: X = 246: GOSUB generat
' barre bas + icones
LINE (3, 415)-(636, 476), 15, BF: LINE (3, 415)-(636, 415), 0
LINE (3, 417)-(636, 417), 0
LINE (0, 0)-(639, 479), 0, B: LINE (1, 1)-(638, 478), 7, B
LINE (2, 2)-(637, 477), 0, B
c = 0: Y = 427
X = 50: GOSUB refaire: c = 9: X = 130: GOSUB graf: X = 195: GOSUB schem
X = 274: GOSUB dbook: X = 364: GOSUB memo: X = 415: GOSUB menu
c = 0: X = 51: GOSUB refaire: c = 9: X = 131: GOSUB graf: X = 196: GOSUB schem
X = 275: GOSUB dbook: X = 365: GOSUB memo: X = 416: GOSUB menu
c = 4: X = 480: GOSUB quit: X = 481: GOSUB quit
IconRefaire 50, 440
IconGraf 120, 440
IconSchema 170, 440
a = 170: B = 440: c = 13: X = a + 23: Y = B + 22: GOSUB I: GOSUB c
IconDataBook 220, 440
X = 270: Y = 445: GOSUB URI: X = 271: GOSUB URI
X = 270: Y = 456: GOSUB 707: X = 271: GOSUB 707
Y = 465: X = 282: GOSUB PUI: X = 283: GOSUB PUI
a = 320: B = 440: LINE (a, B)-(a + 40, B + 30), 0, B 'Icon MENU
LINE (a + 2, B + 2)-(a + 38, B + 11), 9, BF
X = a + 6: Y = B + 6: c = 15: GOSUB menu: X = a + 7: GOSUB menu
LINE (a + 2, B + 13)-(a + 38, B + 24), 7, BF
IconQuitter 370, 440
X = 375: Y = 456: GOSUB sod: X = 376: GOSUB sod
REM -------------------- REFAIRE --------------------------------
recomm:
frm = 0: unitV1 = 0: V1 = 0: UnitF1 = 0: Fq1 = 0: RCa = 0: RCb = 0
frm2 = 0: unitV2 = 0: V2 = 0: unitF2 = 0: Fq2 = 0: RCc = 0: RCd = 0
DIM valnb(25) AS INTEGER: ndg = 0: lim = 0: nfp = 0
a = 50: aa = 590: B = 130: bb = 360: cf = 7: GOSUB boite 'cadre général
FOR I = 20 TO 180 STEP 40
LINE (a + 20, B + I)-(305, B + I + 30), 0, B
LINE (305, B + I)-(305, B + I + 30), 15
LINE -(a + 20, B + I + 30), 15: NEXT I
FOR I = 20 TO 180 STEP 40
LINE (325, B + I)-(aa - 20, B + I + 30), 0, B
LINE (aa - 20, B + I)-(aa - 20, B + I + 30), 15
LINE -(325, B + I + 30), 15: NEXT I
REM ::::::::::::::::::::::::::::::::::::::::::::::::::::
a = 205: aa = 435: B = 70: bb = 115: cf = 7: GOSUB boite
Y = 90: c = 15: X = 231
GOSUB mode: GOSUB trt: GOSUB MONO: GOSUB ou: GOSUB trt: GOSUB DUAL: GOSUB pintr
Y = 91: c = 0: X = 230
GOSUB mode: GOSUB trt: GOSUB MONO: GOSUB ou: GOSUB trt: GOSUB DUAL: GOSUB pintr
ResetMouse
Curseur% = VitesseSouris
MouseSpeed Curseur%
1 : GOSUB Entree
IF Y% > 10 AND Y% < 15 THEN GOSUB MonoDual
Y = 90: c = 15: X = 410
IF f$ = "M" THEN GOSUB Mm: X = 409: Y = 91: c = 0: GOSUB Mm: mode = 1: GOTO 2
IF f$ = "D" THEN GOSUB Dm: X = 409: Y = 91: c = 0: GOSUB Dm: mode = 2: GOTO 2
IF f$ <> "M" OR f$ <> "V" THEN BEEP: GOTO 1
2 : Y = 165: c = 15: X = 81: GOSUB sigal: GOSUB SinCarTri
Y = 166: c = 0: X = 80: GOSUB sigal: GOSUB SinCarTri
20 : GOSUB Entree
IF Y% > 20 AND Y% < 25 THEN GOSUB SiCaTr
Y = 165: c = 15: X = 290
IF f$ = "S" THEN GOSUB Sm: X = 289: Y = 166: c = 0: GOSUB Sm: frm = 1: GOTO 3
IF f$ = "C" THEN GOSUB Cm: X = 289: Y = 166: c = 0: GOSUB Cm: frm = 2: GOTO 3
IF f$ = "T" THEN GOSUB Tm: X = 289: Y = 166: c = 0: GOSUB Tm: frm = 3: GOTO 3
IF f$ <> "S" OR f$ <> "C" OR f$ <> "T" THEN BEEP: GOTO 20
3 : Y = 205: c = 15: X = 81: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
Y = 206: c = 0: X = 80: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
30 : GOSUB Entree
IF Y% > 25 AND Y% < 29 THEN GOSUB AmpliSignal1
Y = 205: c = 15: X = 270
IF f$ = "V" THEN GOSUB Vm: X = 269: Y = 206: c = 0: GOSUB Vm: unitV1 = 1: GOTO 4
IF f$ = "M" THEN GOSUB mv: X = 269: Y = 206: c = 0: GOSUB mv: unitV1 = 2: GOTO 4
IF f$ <> "M" OR f$ <> "V" THEN BEEP: GOTO 30
4 : LINE (71, 231)-(304, 259), 7, BF
Y = 247: c = 15: X = 81: GOSUB amplitude: GOSUB sigal: GOSUB g1: GOSUB pt2
Y = 248: c = 0: X = 80: GOSUB amplitude: GOSUB sigal: GOSUB g1: GOSUB pt2
Y = 247: c = 15: X = 265
IF unitV1 = 1 THEN GOSUB Vm ELSE GOSUB mv
Y = 248: c = 0: X = 264
IF unitV1 = 1 THEN GOSUB Vm ELSE GOSUB mv
LINE (217, 238)-(253, 255), 0, BF
LINE (254, 239)-(254, 256), 15: LINE -(218, 256), 15
COLOR 15: LOCATE 16, 29: PRINT " ": Num$ = ""
DO
SaisieNum Num$, 3, 29, 16
LOCATE 16, 29: PRINT " "
COLOR 7: LOCATE 16, 29: PRINT Num$
SELECT CASE ASC(RIGHT$(key$, 1))
CASE 13: EXIT DO
END SELECT
LOOP
V1 = VAL(Num$)
IF V1 = 0 THEN BEEP: GOTO 4
Y = 285: c = 15: X = 81: GOSUB frequence: GOSUB en: GOSUB trt: GOSUB Hz
X = X + 9: GOSUB trt: GOSUB Km: GOSUB Hz: X = X + 9: GOSUB trt: GOSUB Mm
GOSUB Hz: X = X + 6: GOSUB pintr
Y = 286: c = 0: X = 80: GOSUB frequence: GOSUB en: GOSUB trt: GOSUB Hz
X = X + 9: GOSUB trt: GOSUB Km: GOSUB Hz: X = X + 9: GOSUB trt: GOSUB Mm
GOSUB Hz: X = X + 6: GOSUB pintr
5 : GOSUB Entree
IF Y% > 34 AND Y% < 38 THEN GOSUB FreqSignal1
Y = 285: c = 15: X = 275:
IF f$ = "H" THEN GOSUB Hz: X = 274: Y = 286: c = 0: GOSUB Hz: UnitF1 = 1: GOTO 6
IF f$ = "K" THEN GOSUB Km: GOSUB Hz: X = 274: Y = 286: c = 0: GOSUB Km: GOSUB Hz: UnitF1 = 3: GOTO 6
IF f$ = "M" THEN GOSUB Mm: GOSUB Hz: X = 274: Y = 286: c = 0: GOSUB Mm: GOSUB Hz: UnitF1 = 6: GOTO 6
IF f$ <> "H" OR f$ <> "K" OR f$ <> "M" THEN BEEP: GOTO 5
6 : I = 180: LINE (71, 130 + I + 1)-(304, 130 + I + 29), 7, BF
Y = 326: c = 15: X = 81: GOSUB frequence: GOSUB sigal: GOSUB g1: GOSUB pt2
Y = 327: c = 0: X = 80: GOSUB frequence: GOSUB sigal: GOSUB g1: GOSUB pt2
Y = 326: c = 15: X = 266
IF UnitF1 = 1 THEN GOSUB Hz
IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
Y = 327: c = 0: X = 265
IF UnitF1 = 1 THEN GOSUB Hz
IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
LINE (217, 318)-(253, 335), 0, BF
LINE (254, 319)-(254, 336), 15: LINE -(218, 336), 15
COLOR 15: LOCATE 21, 29: PRINT " ": Num$ = ""
DO
IF UnitF1 = 6 THEN
SaisieNum Num$, 2, 29, 21
ELSE
SaisieNum Num$, 3, 29, 21
END IF
LOCATE 21, 29: PRINT " "
COLOR 7: LOCATE 21, 29: PRINT Num$
SELECT CASE ASC(RIGHT$(key$, 1))
CASE 13: EXIT DO 'Enter pour sortie boucle
END SELECT
LOOP
Fq1 = VAL(Num$)
IF Fq1 = 0 THEN BEEP: GOTO 6
IF UnitF1 = 6 AND Fq1 > 99 THEN BEEP: GOTO 6
IF UnitF1 = 1 THEN Fq1 = Fq1 ELSE Fq1 = Fq1 * 10 ^ UnitF1
IF mode = 1 AND frm = 1 THEN GOTO 14
IF mode = 2 AND frm = 1 THEN GOTO 8
70 :
RCa = 50: RCb = 50
testmode: IF mode = 1 THEN GOTO 14 ELSE GOTO 8 'mode MONO ou DUAL
8 : Y = 165: c = 15: X = 336: GOSUB sigal: GOSUB SinCarTri
Y = 166: c = 0: X = 335: GOSUB sigal: GOSUB SinCarTri
80 : GOSUB Entree
IF Y% > 20 AND Y% < 25 THEN GOSUB SiCaTr2
Y = 165: c = 15: X = 545
IF f$ = "S" THEN GOSUB Sm: X = 544: Y = 166: c = 0: GOSUB Sm: frm2 = 1: GOTO 9
IF f$ = "C" THEN GOSUB Cm: X = 544: Y = 166: c = 0: GOSUB Cm: frm2 = 2: GOTO 9
IF f$ = "T" THEN GOSUB Tm: X = 544: Y = 166: c = 0: GOSUB Tm: frm2 = 3: GOTO 9
IF f$ <> "S" OR f$ <> "C" OR f$ <> "T" THEN BEEP: GOTO 80
9 : Y = 205: c = 15: X = 336: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
Y = 206: c = 0: X = 335: GOSUB amplitude: GOSUB en: GOSUB trt: GOSUB mv
GOSUB ou: GOSUB en: GOSUB trt: GOSUB Vm: X = X + 4: GOSUB pintr
90 : GOSUB Entree
IF Y% > 25 AND Y% < 29 THEN GOSUB AmpliSignal2
Y = 205: c = 15: X = 535
IF f$ = "V" THEN GOSUB Vm: Y = 206: X = 534: c = 0: GOSUB Vm: unitV2 = 1: GOTO 10
IF f$ = "M" THEN GOSUB mv: Y = 206: X = 534: c = 0: GOSUB mv: unitV2 = 2: GOTO 10
IF f$ <> "M" OR f$ <> "V" THEN BEEP: GOTO 90
10 : LINE (326, 231)-(569, 259), 7, BF
Y = 247: c = 15: X = 336: GOSUB amplitude: GOSUB sigal: GOSUB g2: GOSUB pt2
Y = 248: c = 0: X = 335: GOSUB amplitude: GOSUB sigal: GOSUB g2: GOSUB pt2
Y = 247: c = 15: X = 521
IF unitV2 = 1 THEN GOSUB Vm ELSE GOSUB mv
Y = 248: c = 0: X = 520
IF unitV2 = 1 THEN GOSUB Vm ELSE GOSUB mv
LINE (473, 238)-(508, 255), 0, BF
LINE (509, 239)-(509, 256), 15: LINE -(472, 256), 15
COLOR 15: LOCATE 16, 61: PRINT " ": Num$ = ""
DO
SaisieNum Num$, 3, 61, 16
LOCATE 16, 61: PRINT " "
COLOR 7: LOCATE 16, 61: PRINT Num$
SELECT CASE ASC(RIGHT$(key$, 1))
CASE 13: EXIT DO
END SELECT
LOOP
V2 = VAL(Num$)
IF V2 = 0 THEN BEEP: GOTO 10
Y = 285: c = 15: X = 336: GOSUB frequence: GOSUB en: c = 12
IF UnitF1 = 1 THEN GOSUB Hz
IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
Y = 286: c = 0: X = 335: GOSUB frequence: GOSUB en: c = 4
IF UnitF1 = 1 THEN GOSUB Hz: unitF2 = 1
IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz: unitF2 = 3
IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz: unitF2 = 6
IF unitF2 = 1 THEN Fq2 = Fq2 ELSE Fq2 = Fq2 * 10 ^ unitF2
12 : I = 220: LINE (326, 311)-(569, 339), 7, BF
Y = 326: c = 15: X = 336: GOSUB frequence: GOSUB sigal: GOSUB g2: GOSUB pt2
Y = 327: c = 0: X = 335: GOSUB frequence: GOSUB sigal: GOSUB g2: GOSUB pt2
Y = 326: c = 15: X = 521
IF unitF2 = 1 THEN GOSUB Hz
IF unitF2 = 3 THEN GOSUB Km: GOSUB Hz
IF unitF2 = 6 THEN GOSUB Mm: GOSUB Hz
Y = 327: c = 0: X = 520
IF unitF2 = 1 THEN GOSUB Hz
IF unitF2 = 3 THEN GOSUB Km: GOSUB Hz
IF unitF2 = 6 THEN GOSUB Mm: GOSUB Hz
LINE (473, 318)-(508, 335), 0, BF
LINE (509, 319)-(509, 336), 15: LINE -(472, 336), 15
COLOR 15: LOCATE 21, 61: PRINT " ": Num$ = ""
DO
IF UnitF1 = 6 THEN
SaisieNum Num$, 2, 61, 21
ELSE
SaisieNum Num$, 3, 61, 21
END IF
LOCATE 21, 61: PRINT " "
COLOR 7: LOCATE 21, 61: PRINT Num$
SELECT CASE ASC(RIGHT$(key$, 1))
CASE 13: EXIT DO 'Enter pour sortie boucle
END SELECT
LOOP
Fq2 = VAL(Num$)
IF unitF2 = 6 AND Fq2 > 99 THEN BEEP: GOTO 12
IF unitF2 = 1 THEN Fq2 = Fq2 ELSE Fq2 = Fq2 * 10 ^ unitF2
IF Fq2 = 0 THEN BEEP: GOTO 12
IF Fq1 > 10 * Fq2 OR Fq2 > 10 * Fq1 THEN BEEP: GOTO 12
IF frm2 = 1 THEN GOTO 14
13 : RCc = 50: RCd = 50
14 :
REM OSCILLOSCOPE
REM barre titre
LINE (3, 31)-(636, 60), 15, BF: cf = 9: LINE (3, 61)-(636, 477), cf, BF
LINE (535, 40)-(545, 50), 0, B
Y = 44: c = 0: X = 556: GOSUB trt: X = 555: GOSUB quit: X = 556: GOSUB quit
Facteur% = 1: fa = 390 'facteur% d'atténuation: fa=posit. curseur
1000 :
REM tracé scope
a = 38: aa = 312: B = 78: bb = 302: cf = 0: GOSUB boite 'cadre
FOR h = 90 TO 290 STEP 25: LINE (50, h)-(300, h), 9: NEXT h 'grille
FOR V = 50 TO 300 STEP 25: LINE (V, 90)-(V, 290), 9: NEXT V
FOR h = 90 TO 290 STEP 5: LINE (173, h)-(177, h), 9: NEXT h
FOR V = 50 TO 300 STEP 5: LINE (V, 188)-(V, 192), 9: NEXT V
REM CALIBRES AUTO
a = 38: aa = 312: B = 355: bb = 475: cf = 7: GOSUB boite 'calibre auto
LINE (a, B - 20)-(aa, bb), 0, B
LINE (a + 1, B - 19)-(aa - 1, B - 1), 1, BF
X = 122: Y = B - 10: c = 15: GOSUB calibroto: X = 123: GOSUB calibroto
FOR I = 20 TO 80 STEP 30
LINE (a + 20, B + I)-(aa - 20, B + I + 20), 0, B
LINE (aa - 20, B + I)-(aa - 20, B + I + 20), 15
LINE -(a + 20, B + I + 20), 15: NEXT I
c = 15: Y = 385: X = 71: GOSUB sigal: GOSUB g1: X = X + 2: GOSUB pt2
c = 0: Y = 386: X = 70: GOSUB sigal: GOSUB g1: X = X + 2: GOSUB pt2
c = 15: Y = 415: X = 71: GOSUB sigal: GOSUB g2: GOSUB pt2
c = 0: Y = 416: X = 70: GOSUB sigal: GOSUB g2: GOSUB pt2
c = 15: Y = 445: X = 71: GOSUB timebase
c = 0: Y = 446: X = 70: GOSUB timebase
REM BOITE AFFICHAGE & REGLAGES
a = 350: aa = 610: B = 150: bb = 475: cf = 7: GOSUB boite 'réglages
LINE (a, B - 20)-(aa, bb), 0, B: LINE (a + 1, B - 19)-(aa - 1, B - 1), 1, BF
X = 445: Y = B - 10: c = 15: GOSUB reglages: X = 446: GOSUB reglages
c = 15: X = 456: Y = B + 19: GOSUB sigal: GOSUB g1
c = 0: X = 455: Y = B + 20: GOSUB sigal: GOSUB g1
FOR I = 35 TO 95 STEP 30
GOSUB TouchePlms: NEXT I
FOR I = 155 TO 215 STEP 30
GOSUB TouchePlms: NEXT I
c = 15: X = 456: Y = B + 134: GOSUB sigal: GOSUB g2
c = 0: X = 455: Y = B + 135: GOSUB sigal: GOSUB g2
c = 15: Y = 195: X = 416: GOSUB amplitude: GOSUB pt2
c = 0: Y = 196: X = 415: GOSUB amplitude: GOSUB pt2
c = 15: Y = 225: X = 416: GOSUB frequence: GOSUB pt2
c = 0: Y = 226: X = 415: GOSUB frequence: GOSUB pt2
IF frm = 1 THEN GOTO AffSte
c = 15: Y = 255: X = 401: GOSUB rapportcy: GOSUB pt2
c = 0: Y = 256: X = 400: GOSUB rapportcy: GOSUB pt2
AffSte:
IF mode = 1 THEN GOTO AfficheVal
q = 120
c = 15: Y = 195 + q: X = 416: GOSUB amplitude: GOSUB pt2
c = 0: Y = 196 + q: X = 415: GOSUB amplitude: GOSUB pt2
c = 15: Y = 225 + q: X = 416: GOSUB frequence: GOSUB pt2
c = 0: Y = 226 + q: X = 415: GOSUB frequence: GOSUB pt2
IF frm2 = 1 THEN GOTO AfficheVal
c = 15: Y = 255 + q: X = 401: GOSUB rapportcy: GOSUB pt2
c = 0: Y = 256 + q: X = 400: GOSUB rapportcy: GOSUB pt2
AfficheVal:
c = 15: Y = 195: X = 496: GOSUB ValAmpSig1 'affichage valeurs signal 1
c = 0: Y = 196: X = 495: GOSUB ValAmpSig1
c = 15: Y = 225: X = 496: GOSUB ValFeqSig1
c = 0: Y = 226: X = 495: GOSUB ValFeqSig1
IF frm = 1 THEN GOTO AffCanal2
c = 15: Y = 255: X = 529: GOSUB AFFRC1
c = 0: Y = 256: X = 528: GOSUB AFFRC1
AffCanal2: 'affichage valeurs pour signal 2
IF mode = 1 THEN GOTO ReglagAtt
c = 15: Y = 195 + q: X = 496: GOSUB ValAmpSig2
c = 0: Y = 196 + q: X = 495: GOSUB ValAmpSig2
c = 15: Y = 225 + q: X = 496: GOSUB ValFeqSig2
c = 0: Y = 226 + q: X = 495: GOSUB ValFeqSig2
IF frm2 = 1 THEN GOTO ReglagAtt
c = 15: Y = 255 + q: X = 529: GOSUB AFFRC2
c = 0: Y = 256 + q: X = 528: GOSUB AFFRC2
ReglagAtt: 'réglage du facteur% atténuation
c = 15: X = 413: Y = B + 255: GOSUB facteuratt
c = 0: X = 412: Y = B + 256: GOSUB facteuratt
a = 350: aa = 610: B = 150
I = 275: GOSUB TouchePlms
Y = 455: c = 15:
X = 401: GOSUB g1: X = 421: GOSUB g2: X = 441: GOSUB g3
X = 461: GOSUB g4: X = 481: GOSUB g5: X = 501: GOSUB g6
X = 521: GOSUB g7: X = 541: GOSUB g8: X = 561: GOSUB g9
Y = 456: c = 0:
X = 400: GOSUB g1: X = 420: GOSUB g2: X = 440: GOSUB g3
X = 460: GOSUB g4: X = 480: GOSUB g5: X = 500: GOSUB g6
X = 520: GOSUB g7: X = 540: GOSUB g8: X = 560: GOSUB g9
LINE (fa, B + I + 1)-(fa + 20, B + I + 19), 0, B
LINE (fa + 1, B + I + 18)-(fa + 1, B + I + 2), 15
LINE -(fa + 19, B + I + 2), 15
'................................................
T1! = 1 / Fq1
IF V1 <= 9.99 THEN VCH1! = V1 * 10
IF V1 >= 10 AND V1 <= 99.9 THEN VCH1! = V1
IF V1 >= 100 THEN VCH1! = V1 / 10
IF VCH1! < 100 THEN VDIV1! = .5
IF VCH1! < 40 THEN VDIV1! = 1.25
IF VCH1! < 20 THEN VDIV1! = 2.5
IF mode = 1 THEN Fq2 = 0: GOTO AffCalOto
T2! = 1 / Fq2
IF V2 <= 9.99 THEN VCH2! = V2 * 10
IF V2 >= 10 AND V2 <= 99.9 THEN VCH2! = V2
IF V2 >= 100 THEN VCH2! = V2 / 10
IF VCH2! < 100 THEN VDIV2! = .5
IF VCH2! < 40 THEN VDIV2! = 1.25
IF VCH2! < 20 THEN VDIV2! = 2.5
REM affichage calibres auto V/DIV 1 & 2
AffCalOto:
c = 15: Y = 385: X = 141: GOSUB CalSig1Oto
c = 0: Y = 386: X = 140: GOSUB CalSig1Oto
IF mode = 1 THEN GOTO CalBaseTmps
c = 15: Y = 415: X = 141: GOSUB CalSig2Oto
c = 0: Y = 416: X = 140: GOSUB CalSig2Oto
CalBaseTmps:
IF Fq1 >= Fq2 THEN GOTO BaseTemps2 ELSE GOTO BaseTemps1
BaseTemps2: DO: FOR P = -8 TO 1
IF T1! > 0 * 10 ^ P AND T1! <= 2 * 10 ^ P THEN TCAL! = 1 * 10 ^ P: EXIT DO
IF T1! > 2 * 10 ^ P AND T1! <= 5 * 10 ^ P THEN TCAL! = 2 * 10 ^ P: EXIT DO
IF T1! > 5 * 10 ^ P AND T1! <= 9.9 * 10 ^ P THEN TCAL! = 5 * 10 ^ P: EXIT DO
NEXT P: LOOP: GOTO AffCalBtOto
BaseTemps1: DO: FOR P = -8 TO 1
IF T2! > 0 * 10 ^ P AND T2! <= 2 * 10 ^ P THEN TCAL! = 1 * 10 ^ P: EXIT DO
IF T2! > 2 * 10 ^ P AND T2! <= 5 * 10 ^ P THEN TCAL! = 2 * 10 ^ P: EXIT DO
IF T2! > 5 * 10 ^ P AND T2! <= 9.9 * 10 ^ P THEN TCAL! = 5 * 10 ^ P: EXIT DO
NEXT P: LOOP
REM Affichage du calibre base de temps
AffCalBtOto:
c = 15: Y = 445: X = 176: GOSUB CalBtOto
c = 0: Y = 446: X = 175: GOSUB CalBtOto
'......................................................
cc = 10 'couleur des traces
IF frm = 1 THEN GOSUB sin1
IF frm = 2 THEN GOSUB CAR1
IF frm = 3 THEN GOSUB TRI1
IF frm2 = 1 THEN GOSUB sin2
IF frm2 = 2 THEN GOSUB CAR2
IF frm2 = 3 THEN GOSUB TRI2
ResetMouse
MouseSpeed Curseur%
AttMouse: Mouse 1
DO
GetMouse
f$ = INKEY$: f$ = UCASE$(f$)
LOOP UNTIL B% <> Bx% OR LEN(f$)
Mouse 0
IF B% = 1 THEN GOSUB TestMouse
IF f$ = "Q" THEN GOSUB QuitOuiNon
IF f$ <> "Q" THEN GOTO AttMouse
END
'......................................................................
REM barre titre
BarTitre:
LINE (3, 3)-(636, 26), CoulBarreTitre, BF: LINE (3, 29)-(636, 29), 15
c = CoulLettresTitre: X = 25: Y = 14: GOSUB minilab: X = 26: GOSUB minilab
X = 300: GOSUB scop: X = 301: GOSUB scop
LINE (3, 61)-(636, 479), cf, BF: LINE (3, 31)-(636, 60), 15, BF
LINE (3, 60)-(636, 60), 0: RETURN
boite: LINE (a, B)-(aa, bb), 0, B
LINE (a + 11, B + 11)-(aa - 11, bb - 11), cf, BF: PAINT (a + 7, B + 7), 7, 0
LINE (a + 9, bb - 9)-(a + 9, B + 9), 8: LINE -(aa - 9, B + 9), 8
LINE (aa - 9, B + 9)-(aa - 9, bb - 9), 15: LINE -(a + 9, bb - 9), 15: RETURN
CalBtOto: 'détermine calibre base temps
TCAL$ = STR$(TCAL!): cal$ = MID$(TCAL$, LEN(TCAL$))
IF cal$ = "8" THEN cal$ = MID$(TCAL$, 2, 1)
IF cal$ = "1" THEN GOTO cal1
IF cal$ = "2" THEN GOTO cal2
IF cal$ = "5" THEN GOTO cal5
cal1: IF cal$ = "1" AND P = 0 OR P = -3 OR P = -6 OR P = -9 THEN GOSUB g1
IF cal$ = "1" AND P = -1 OR P = -4 OR P = -7 THEN GOSUB cent
IF cal$ = "1" AND P > 0 OR P = -2 OR P = -5 OR P = -8 THEN GOSUB dix
GOTO cals
cal5: IF cal$ = "5" AND P = 0 OR P = -3 OR P = -6 OR P = -9 THEN GOSUB g5
IF cal$ = "5" AND P = -1 OR P = -4 OR P = -7 THEN GOSUB cinqct
IF cal$ = "5" AND P > 0 OR P = -2 OR P = -5 OR P = -8 THEN GOSUB cinqnte
GOTO cals
cal2: IF cal$ = "2" AND P = 0 OR P = -3 OR P = -6 OR P = -9 THEN GOSUB g2
IF cal$ = "2" AND P = -1 OR P = -4 OR P = -7 THEN GOSUB deuxct
IF cal$ = "2" AND P > 0 OR P = -2 OR P = -5 OR P = -8 THEN GOSUB vgt
cals: X = X + 6
IF P >= 0 THEN GOSUB S
IF P < 0 AND P >= -3 THEN GOSUB M: GOSUB S
IF P < -3 AND P >= -6 THEN GOSUB micro: GOSUB S
IF P < -6 AND P >= -9 THEN GOSUB N: GOSUB S
X = X + 8: GOSUB pardiv
RETURN
CalSig1Oto: 'détermine calibre V/DIV 1
IF VDIV1! = .5 AND V1 < 10 THEN GOSUB g5
IF VDIV1! = .5 AND V1 >= 10 AND V1 < 100 THEN GOSUB cinqnte
IF VDIV1! = .5 AND V1 >= 100 THEN GOSUB cinqct
IF VDIV1! = 1.25 AND V1 < 10 THEN GOSUB g2
IF VDIV1! = 1.25 AND V1 >= 10 AND V1 < 100 THEN GOSUB vgt
IF VDIV1! = 1.25 AND V1 >= 100 THEN GOSUB deuxct
IF VDIV1! = 2.5 AND V1 < 10 THEN GOSUB g1
IF VDIV1! = 2.5 AND V1 >= 10 AND V1 < 100 THEN GOSUB dix
IF VDIV1! = 2.5 AND V1 >= 100 THEN GOSUB cent
X = X + 8
IF unitV1 = 1 THEN GOSUB Vm
IF unitV1 = 2 THEN GOSUB M: GOSUB Vm
X = X + 8: GOSUB pardiv
RETURN
CalSig2Oto: 'détermine calibre V/DIV 2
IF VDIV2! = .5 AND V2 < 10 THEN GOSUB g5
IF VDIV2! = .5 AND V2 >= 10 AND V2 < 100 THEN GOSUB cinqnte
IF VDIV2! = .5 AND V2 >= 100 THEN GOSUB cinqct
IF VDIV2! = 1.25 AND V2 < 10 THEN GOSUB g2
IF VDIV2! = 1.25 AND V2 >= 10 AND V2 < 100 THEN GOSUB vgt
IF VDIV2! = 1.25 AND V2 >= 100 THEN GOSUB deuxct
IF VDIV2! = 2.5 AND V2 < 10 THEN GOSUB g1
IF VDIV2! = 2.5 AND V2 >= 10 AND V2 < 100 THEN GOSUB dix
IF VDIV2! = 2.5 AND V2 >= 100 THEN GOSUB cent
X = X + 8
IF unitV2 = 1 THEN GOSUB Vm
IF unitV2 = 2 THEN GOSUB M: GOSUB Vm
X = X + 8: GOSUB pardiv
RETURN
ValAmpSig1: chf$ = STR$(V1)
FOR I = 2 TO LEN(chf$): nbr = VAL(MID$(chf$, I, 1)): GOSUB TestChf: NEXT I
X = X + 5
IF unitV1 = 1 THEN GOSUB Vm
IF unitV1 = 2 THEN GOSUB M: GOSUB Vm
RETURN
ValFeqSig1:
IF UnitF1 = 1 THEN affF1 = Fq1
IF UnitF1 = 3 THEN affF1 = Fq1 / 1000
IF UnitF1 = 6 THEN affF1 = Fq1 / 1000000
cf$ = STR$(affF1): FOR I = 2 TO LEN(cf$): nbr = VAL(MID$(cf$, I, 1))
GOSUB TestChf: NEXT I: X = X + 5
IF UnitF1 = 1 THEN GOSUB Hz
IF UnitF1 = 3 THEN GOSUB Km: GOSUB Hz
IF UnitF1 = 6 THEN GOSUB Mm: GOSUB Hz
RETURN
ValAmpSig2: chf$ = STR$(V2)
FOR I = 2 TO LEN(chf$): nbr = VAL(MID$(chf$, I, 1)): GOSUB TestChf: NEXT I
X = X + 5
IF unitV2 = 1 THEN GOSUB Vm
IF unitV2 = 2 THEN GOSUB M: GOSUB Vm
RETURN
ValFeqSig2:
IF unitF2 = 1 THEN affF2 = Fq2
IF unitF2 = 3 THEN affF2 = Fq2 / 1000
IF unitF2 = 6 THEN affF2 = Fq2 / 1000000
cf$ = STR$(affF2): FOR I = 2 TO LEN(cf$): nbr = VAL(MID$(cf$, I, 1))
GOSUB TestChf: NEXT I: X = X + 5
IF unitF2 = 1 THEN GOSUB Hz
IF unitF2 = 3 THEN GOSUB Km: GOSUB Hz
IF unitF2 = 6 THEN GOSUB Mm: GOSUB Hz
RETURN
AFFRC1:
RCa$ = STR$(RCa): FOR I = 2 TO LEN(RCa$): nbr = VAL(MID$(RCa$, I, 1))
GOSUB TestChf: NEXT I: GOSUB pt2: X = X + 6
RCb$ = STR$(RCb): FOR I = 2 TO LEN(RCb$): nbr = VAL(MID$(RCb$, I, 1))
GOSUB TestChf: NEXT I: RETURN
AFFRC2:
RCc$ = STR$(RCc): FOR I = 2 TO LEN(RCc$): nbr = VAL(MID$(RCc$, I, 1))
GOSUB TestChf: NEXT I: GOSUB pt2: X = X + 6
RCd$ = STR$(RCd): FOR I = 2 TO LEN(RCd$): nbr = VAL(MID$(RCd$, I, 1))
GOSUB TestChf: NEXT I: RETURN
TestChf: IF nbr = 0 THEN GOSUB g0
IF nbr = 1 THEN GOSUB g1
IF nbr = 2 THEN GOSUB g2
IF nbr = 3 THEN GOSUB g3
IF nbr = 4 THEN GOSUB g4
IF nbr = 5 THEN GOSUB g5
IF nbr = 6 THEN GOSUB g6
IF nbr = 7 THEN GOSUB g7
IF nbr = 8 THEN GOSUB g8
IF nbr = 9 THEN GOSUB g9
RETURN
TouchePlms: 'boîtes et touches + - de réglages
LINE (a + 20, B + I)-(aa - 20, B + I + 20), 0, B
LINE (aa - 20, B + I)-(aa - 20, B + I + 20), 15
LINE -(a + 20, B + I + 20), 15:
LINE (a + 21, B + I + 1)-(a + 39, B + I + 19), 8, B
LINE (a + 22, B + I + 18)-(a + 22, B + I + 2), 15
LINE -(a + 38, B + I + 2), 15
LINE (aa - 39, B + I + 1)-(aa - 21, B + I + 19), 8, B
LINE (aa - 38, B + I + 18)-(aa - 38, B + I + 2), 15
LINE -(aa - 22, B + I + 2), 15
X = a + 29: Y = B + I + 10: c = 4: GOSUB moins
X = a + 30: Y = B + I + 9: c = 12: GOSUB moins
X = aa - 29: Y = B + I + 10: c = 2: GOSUB plus
X = aa - 30: Y = B + I + 9: c = 10: GOSUB plus: RETURN
sin1: IF mode = 1 THEN Y = 190: X = 50 'sinus1
IF mode = 2 THEN Y = 140: X = 50
TDIV! = 360 / (25 * (T1! / TCAL!))
DO
FOR a = 0 TO 180 STEP 2
ang! = a * .01745: divt! = a / TDIV!
PSET (X + divt!, Y + (VCH1! * SIN(ang!)) * VDIV1!), cc
IF X + divt! > 299 THEN EXIT DO
NEXT a
FOR a = 180 TO 360 STEP 2
ang! = a * .01745: divt! = a / TDIV!
PSET (X + divt!, Y + (VCH1! * SIN(ang!)) * VDIV1!), cc
IF X + divt! > 299 THEN EXIT DO
NEXT a
X = X + (25 * (T1! / TCAL!)): LOOP: RETURN
sin2: Y = 240: X = 50 'sinus2
TDIV! = 360 / (25 * (T2! / TCAL!))
DO
FOR a = 0 TO 180 STEP 2
ang! = a * .01745: divt! = a / TDIV!
PSET (X + divt!, Y + (VCH2! * SIN(ang!)) * VDIV2!), cc
IF X + divt! > 299 THEN EXIT DO
NEXT a
FOR a = 180 TO 360 STEP 2
ang! = a * .01745: divt! = a / TDIV!
PSET (X + divt!, Y + (VCH2! * SIN(ang!)) * VDIV2!), cc
IF X + divt! > 299 THEN EXIT DO
NEXT a
X = X + (25 * (T2! / TCAL!)): LOOP: RETURN
CAR1: IF mode = 1 THEN Y = 190: X = 50 'Trace signal CARRE
IF mode = 2 THEN Y = 140: X = 50
T10! = T1! * RCa / 100: T12! = T1! * RCb / 100
cycle1 = (25 * T10!) / TCAL!: cycle2 = (25 * T12!) / TCAL!
ampmax = VCH1! * VDIV1!
DO
LINE (X, Y + ampmax)-(X, Y - ampmax), cc
FOR q = X TO X + cycle1
PSET (q, Y - ampmax), cc: IF q > 299 THEN EXIT DO
NEXT q: LINE -(X + cycle1, Y + ampmax), cc
FOR q = X + cycle1 TO X + cycle1 + cycle2
PSET (q, Y + ampmax), cc: IF q > 299 THEN EXIT DO
NEXT q: X = X + cycle1 + cycle2: LOOP: RETURN
CAR2: X = 50: Y = 240: T20! = T2! * RCc / 100: T22! = T2! * RCd / 100
cycle1 = (25 * T20!) / TCAL!: cycle2 = (25 * T22!) / TCAL!
ampmax = VCH2! * VDIV2!
DO
LINE (X, Y + ampmax)-(X, Y - ampmax), cc
FOR q = X TO X + cycle1
PSET (q, Y - ampmax), cc: IF q > 299 THEN EXIT DO
NEXT q: LINE -(X + cycle1, Y + ampmax), cc
FOR q = X + cycle1 TO X + cycle1 + cycle2
PSET (q, Y + ampmax), cc: IF q > 299 THEN EXIT DO
NEXT q: X = X + cycle1 + cycle2: LOOP: RETURN
TRI1: IF mode = 1 THEN Y = 190: X = 50 'Trace Signal TRIANGLE
IF mode = 2 THEN Y = 140: X = 50
T10! = T1! * RCa / 100: T12! = T1! * RCb / 100
cycle1 = (25 * T10!) / TCAL!: cycle2 = (25 * T12!) / TCAL!
ampmax = VCH1! * VDIV1!
DO
IF X + cycle1 > 301 THEN EXIT DO
LINE (X, Y + ampmax)-(X + cycle1, Y - ampmax), cc
IF X + cycle1 + cycle2 > 301 THEN EXIT DO
LINE -(X + cycle1 + cycle2, Y + ampmax), cc
X = X + cycle1 + cycle2
LOOP: RETURN
TRI2: X = 50: Y = 240: T20! = T2! * RCc / 100: T22! = T2! * RCd / 100
cycle1 = (25 * T20!) / TCAL!: cycle2 = (25 * T22!) / TCAL!
ampmax = VCH2! * VDIV2!
DO
IF X + cycle1 > 301 THEN EXIT DO
LINE (X, Y + ampmax)-(X + cycle1, Y - ampmax), cc
IF X + cycle1 + cycle2 > 301 THEN EXIT DO
LINE -(X + cycle1 + cycle2, Y + ampmax), cc
X = X + cycle1 + cycle2: LOOP: RETURN
'................................. REGLAGES .....................
Ampli1Plus: V1 = V1 + Facteur%
IF V1 > 999 THEN V1 = 999
Mouse 0: GOTO 1000
Ampli1Moins: V1 = V1 - Facteur%
IF V1 < 1 THEN V1 = 1
Mouse 0: GOTO 1000
Ampli2Moins:
IF mode <> 2 THEN RETURN AttMouse
V2 = V2 - Facteur%
IF V2 < 1 THEN V2 = 1
Mouse 0: GOTO 1000
Ampli2Plus:
IF mode <> 2 THEN RETURN AttMouse
V2 = V2 + Facteur%
IF V2 > 999 THEN V2 = 999
Mouse 0: GOTO 1000
Feq1Plus:
IF UnitF1 = 1 THEN Fq1 = Fq1 + Facteur% ELSE Fq1 = Fq1 + (Facteur% * 10 ^ UnitF1)
IF Fq1 > 999 * 10 ^ UnitF1 THEN Fq1 = 999 * 10 ^ UnitF1
IF Fq1 > 99 * 10 ^ 6 THEN Fq1 = 99 * 10 ^ 6
Mouse 0: GOTO 1000
Feq1Moins:
IF UnitF1 = 1 THEN Fq1 = Fq1 - Facteur% ELSE Fq1 = Fq1 - (Facteur% * 10 ^ UnitF1)
IF Fq1 < 1 * 10 ^ UnitF1 THEN Fq1 = 1 * 10 ^ UnitF1
Mouse 0: GOTO 1000
Feq2Plus:
IF mode <> 2 THEN RETURN AttMouse
IF unitF2 = 1 THEN Fq2 = Fq2 + Facteur% ELSE Fq2 = Fq2 + (Facteur% * 10 ^ unitF2)
IF Fq2 > 999 * 10 ^ unitF2 THEN Fq2 = 999 * 10 ^ unitF2
IF Fq2 > 99 * 10 ^ 6 THEN Fq2 = 99 * 10 ^ 6
Mouse 0: GOTO 1000
Feq2Moins:
IF mode <> 2 THEN RETURN AttMouse
IF unitF2 = 1 THEN Fq2 = Fq2 - Facteur% ELSE Fq2 = Fq2 - (Facteur% * 10 ^ unitF2)
IF Fq2 < 1 * 10 ^ unitF2 THEN Fq2 = 1 * 10 ^ unitF2
Mouse 0: GOTO 1000
RC1Plus: IF frm = 1 THEN RETURN AttMouse
GOSUB RCaPlus: Mouse 0: GOTO 1000
RC1Moins: IF frm = 1 THEN RETURN AttMouse
GOSUB RCaMoins: Mouse 0: GOTO 1000
RC2Plus: IF mode = 1 THEN RETURN AttMouse
IF frm2 = 1 THEN RETURN AttMouse
GOSUB RCcPlus: Mouse 0: GOTO 1000
RC2Moins: IF mode = 1 THEN RETURN AttMouse
IF frm2 = 1 THEN BEEP: RETURN AttMouse
GOSUB RCcMoins: Mouse 0: GOTO 1000
RCaPlus: RCa = RCa + Facteur%
IF RCa > 90 THEN RCa = 90: BEEP
RCb = RCb - Facteur%
IF RCb < 10 THEN RCb = 10
RETURN
RCaMoins: RCa = RCa - Facteur%
IF RCa < 10 THEN RCa = 10: BEEP
RCb = RCb + Facteur%
IF RCb > 90 THEN RCb = 90
RETURN
RCcPlus: RCc = RCc + Facteur%
IF RCc > 90 THEN RCc = 90: BEEP
RCd = RCd - Facteur%
IF RCd < 10 THEN RCd = 10
RETURN
RCcMoins: RCc = RCc - Facteur%
IF RCc < 10 THEN RCc = 10: BEEP
RCd = RCd + Facteur%
IF RCd > 90 THEN RCd = 90
RETURN
fin: COLOR 15: SYSTEM
egal: FOR h = X - 2 TO X + 3: PSET (h, Y - 1), c: NEXT h
FOR h = X - 2 TO X + 3: PSET (h, Y - 2), c: NEXT h
FOR h = X - 2 TO X + 3: PSET (h, Y + 1), c: NEXT h:
FOR h = X - 2 TO X + 3: PSET (h, Y + 2), c: NEXT h: X = X + 9: RETURN
g1: FOR vert = Y - 4 TO Y + 4: PSET (X, vert), c: NEXT vert
PSET (X - 1, Y - 4), c: PSET (X - 1, Y + 4), c: PSET (X + 1, Y + 4), c
X = X + 9: RETURN
g2: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c: PSET (X - 1, Y - 3), c
PSET (X + 2, Y - 3), c: PSET (X - 2, Y - 2), c: PSET (X + 3, Y - 2), c
PSET (X + 3, Y - 1), c: PSET (X + 2, Y), c
PSET (X, Y + 1), c: PSET (X + 1, Y), c
PSET (X - 2, Y + 2), c: PSET (X - 1, Y + 2), c: PSET (X - 2, Y + 3), c
FOR hor = X - 2 TO X + 3: PSET (hor, Y + 4), c: NEXT hor: X = X + 9: RETURN
g3: FOR h = X - 2 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 2 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V
FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
g4: FOR V = Y - 1 TO Y + 4: PSET (X + 2, V), c: NEXT V
FOR V = Y - 4 TO Y: PSET (X - 2, V), c: NEXT V
FOR h = X - 2 TO X + 3: PSET (h, Y + 1), c: NEXT h: f = X + 3: X = X + 9: RETURN
g6: FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR V = Y - 3 TO Y + 3: PSET (X - 2, V), c: NEXT V: PSET (X + 3, Y - 3), c
FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
g7: FOR h = X - 2 TO X + 3: PSET (h, Y - 4), c: NEXT h
PSET (X - 2, Y - 3), c: FOR V = Y - 4 TO Y - 1: PSET (X + 3, V), c: NEXT V
FOR V = Y + 2 TO Y + 4: PSET (X - 1, V), c: NEXT V
f = X + 2: FOR D = Y TO Y + 2: PSET (f, D), c: f = f - 1: NEXT D
X = X + 9: RETURN
g8: FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR V = Y + 1 TO Y + 3: PSET (X - 2, V), c: NEXT V
FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V
FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
g5: FOR h = X - 2 TO X + 3: PSET (h, Y - 4), c: NEXT h
FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
PSET (X - 2, Y + 3), c: X = X + 9: RETURN
g9: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y + 3: PSET (X + 3, V), c: NEXT V
PSET (X - 2, Y + 3), c: X = X + 9: RETURN
g0: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR V = Y TO Y + 3: PSET (X - 2, V), c: NEXT V
FOR V = Y TO Y + 3: PSET (X + 3, V), c: NEXT V
FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
Am: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
FOR vert = Y - 2 TO Y + 4: PSET (X - 2, vert), c: PSET (X + 3, vert), c: NEXT vert
FOR hor = X - 1 TO X + 2: PSET (hor, Y + 1), c: NEXT hor: X = X + 9: RETURN
Bm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR V = Y - 3 TO Y - 1: PSET (X + 3, V), c: NEXT V
FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V: X = X + 9: RETURN
Cm: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
FOR vert = Y - 2 TO Y + 2: PSET (X - 2, vert), c: NEXT vert
PSET (X + 3, Y - 2), c: PSET (X + 3, Y + 2), c
PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c: X = X + 9: RETURN
Dm: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: NEXT vert
FOR hor = X - 1 TO X + 1: PSET (hor, Y - 4), c: NEXT hor
PSET (X + 2, Y - 3), c
FOR vert = Y - 2 TO Y + 2: PSET (X + 2, vert), c: NEXT vert
FOR hor = X - 1 TO X + 1: PSET (hor, Y + 4), c: NEXT hor
PSET (X + 2, Y + 3), c: X = X + 9: RETURN
Em: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: NEXT vert
FOR hor = X - 1 TO X + 3: PSET (hor, Y - 4), c: NEXT hor
FOR hor = X - 1 TO X + 1: PSET (hor, Y), c: NEXT hor
FOR hor = X - 1 TO X + 3: PSET (hor, Y + 4), c: NEXT hor: X = X + 9: RETURN
Fm: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: NEXT vert
FOR hor = X - 1 TO X + 3: PSET (hor, Y - 4), c: NEXT hor
FOR hor = X - 1 TO X + 1: PSET (hor, Y), c: NEXT hor: X = X + 9: RETURN
Gm: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
FOR vert = Y - 2 TO Y + 2: PSET (X - 2, vert), c: NEXT vert
PSET (X + 3, Y - 2), c: PSET (X + 3, Y + 2), c: PSET (X + 3, Y + 1), c
PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c
FOR h = X + 1 TO X + 3: PSET (h, Y), c: NEXT h: X = X + 9: RETURN
Hm: FOR vert = Y - 4 TO Y + 4: PSET (X - 2, vert), c: PSET (X + 3, vert), c: NEXT vert
FOR hor = X - 1 TO X + 2: PSET (hor, Y), c: NEXT hor: X = X + 9: RETURN
Im: X = X - 2: FOR V = Y - 4 TO Y + 4: PSET (X, V), c: NEXT V: X = X + 7: RETURN
Lm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 3: PSET (h, Y + 4), c: NEXT h: X = X + 9: RETURN
Mm: FOR V = Y - 4 TO Y + 4: PSET (X - 3, V), c: NEXT V
FOR V = Y - 4 TO Y + 4: PSET (X + 3, V), c: NEXT V
PSET (X - 2, Y - 3), c: PSET (X - 1, Y - 2), c: PSET (X - 1, Y - 2), c
PSET (X, Y - 1), c: PSET (X + 2, Y - 3), c: PSET (X + 1, Y - 2), c
PSET (X + 1, Y - 2), c: X = X + 9: RETURN
Nm: FOR V = Y - 4 TO Y + 4: PSET (X - 3, V), c: NEXT V
FOR V = Y - 4 TO Y + 4: PSET (X + 3, V), c: NEXT V
V = Y - 3: FOR h = X - 2 TO X + 2: PSET (h, V), c: V = V + 1: NEXT h
X = X + 9: RETURN
Km: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
V = Y: FOR h = X - 1 TO X + 3: PSET (h, V), c: V = V - 1: NEXT h
V = Y: FOR h = X - 1 TO X + 3: PSET (h, V), c: V = V + 1: NEXT h
X = X + 9: RETURN
Om: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c: X = X + 9: RETURN
Pm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y - 4), c: NEXT h
PSET (X + 2, Y - 3), c: PSET (X + 3, Y - 2), c: PSET (X + 2, Y - 1), c
FOR h = X - 1 TO X + 1: PSET (h, Y), c: NEXT h: X = X + 9: RETURN
Qm: PSET (X, Y - 4), c: PSET (X + 1, Y - 4), c
PSET (X - 1, Y - 3), c: PSET (X + 2, Y - 3), c
FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c
PSET (X - 1, Y + 3), c: PSET (X + 2, Y + 3), c
PSET (X + 1, Y + 2), c: PSET (X + 3, Y + 4), c
PSET (X + 4, Y + 4), c: X = X + 9: RETURN
rm: FOR V = Y - 4 TO Y + 4: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y - 4), c: NEXT h
PSET (X + 2, Y - 3), c: PSET (X + 3, Y - 2), c: PSET (X + 2, Y - 1), c
FOR h = X - 1 TO X + 1: PSET (h, Y), c: NEXT h
FOR V = Y + 1 TO Y + 4: PSET (X + 2, V), c: NEXT V: X = X + 9: RETURN
Sm: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y), c: NEXT h
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h
FOR V = Y - 3 TO Y - 1: PSET (X - 2, V), c: NEXT V
FOR V = Y + 1 TO Y + 3: PSET (X + 3, V), c: NEXT V
PSET (X + 3, Y - 3), c: PSET (X - 2, Y + 3), c: X = X + 9: RETURN
Tm: FOR V = Y - 3 TO Y + 4: PSET (X, V), c: NEXT V
FOR h = X - 3 TO X + 3: PSET (h, Y - 4), c: NEXT h: X = X + 9: RETURN
Um: FOR V = Y - 4 TO Y + 3: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
FOR h = X - 1 TO X + 2: PSET (h, Y + 4), c: NEXT h: X = X + 9: RETURN
Vm: FOR V = Y - 4 TO Y + 1: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
FOR V = Y + 2 TO Y + 3: PSET (X - 1, V), c: PSET (X + 2, V), c: NEXT V
PSET (X, Y + 4), c: PSET (X + 1, Y + 4), c: X = X + 9: RETURN
' minuscules
a: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y + 3: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
X = X + 7: Y = Y - 1: RETURN
B: Y = Y + 1: FOR V = Y - 5 TO Y + 3: PSET (X - 2, V), c: NEXT V
FOR V = Y - 2 TO Y + 2: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
X = X + 7: Y = Y - 1: RETURN
D: Y = Y + 1: FOR V = Y - 5 TO Y + 3: PSET (X + 2, V), c: NEXT V
FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
X = X + 7: Y = Y - 1: RETURN
f: Y = Y + 1: FOR V = Y - 4 TO Y + 3: PSET (X - 2, V), c: NEXT V
PSET (X + 2, Y - 4), c: FOR h = X - 1 TO X + 1: PSET (h, Y - 1), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 5), c: NEXT h: X = X + 7: Y = Y - 1: RETURN
g: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y + 5: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y + 5), c: NEXT h
X = X + 7: Y = Y - 1: RETURN
h: Y = Y + 1: PSET (X, Y - 3), c: PSET (X + 1, Y - 3), c
FOR V = Y - 5 TO Y + 3: PSET (X - 1, V), c: NEXT V
FOR V = Y - 2 TO Y + 3: PSET (X + 2, V), c: NEXT V: X = X + 7: Y = Y - 1: RETURN
l: Y = Y + 1: FOR V = Y - 4 TO Y + 3: PSET (X, V), c: NEXT V
PSET (X - 1, Y - 4), c: PSET (X - 1, Y + 3), c: PSET (X + 1, Y + 3), c
X = X + 5: Y = Y - 1: RETURN
P: Y = Y + 1: FOR V = Y - 3 TO Y + 5: PSET (X - 2, V), c: NEXT V
FOR V = Y - 2 TO Y + 2: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h: X = X + 7: Y = Y - 1: RETURN
q: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y + 5: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
X = X + 7: Y = Y - 1: RETURN
r: Y = Y + 1: FOR V = Y - 3 TO Y + 3: PSET (X - 2, V), c: NEXT V
PSET (X + 2, Y - 2), c
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h: X = X + 7: Y = Y - 1: RETURN
T: Y = Y + 1: FOR V = Y - 4 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y - 2), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: X = X + 6: Y = Y - 1: RETURN
V: Y = Y + 1: FOR V = Y - 3 TO Y + 1: PSET (X - 2, V), c: PSET (X + 3, V), c: NEXT V
FOR V = Y + 2 TO Y + 2: PSET (X - 1, V), c: PSET (X + 2, V), c: NEXT V
PSET (X, Y + 3), c: PSET (X + 1, Y + 3), c: X = X + 9: Y = Y - 1: RETURN
X: Y = Y + 1: f = X - 3: FOR D = Y - 3 TO Y + 3: PSET (f, D), c: f = f + 1: NEXT D
f = X + 3: FOR D = Y - 3 TO Y + 3: PSET (f, D), c: f = f - 1: NEXT D
X = X + 7: Y = Y - 1: RETURN
Y: Y = Y + 1: FOR V = Y - 3 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y + 5: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y + 6), c: NEXT h
X = X + 7: Y = Y - 1: RETURN
c: Y = Y + 1: FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
PSET (X - 2, Y - 2), c: PSET (X + 2, Y - 2), c
FOR V = Y - 1 TO Y + 1: PSET (X - 2, V), c: NEXT V
PSET (X - 2, Y + 2), c: PSET (X + 2, Y + 2), c
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
e: Y = Y + 1: FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
PSET (X - 2, Y - 2), c: PSET (X + 2, Y - 2), c
PSET (X - 2, Y - 1), c: PSET (X + 2, Y - 1), c
FOR h = X - 2 TO X + 1: PSET (h, Y), c: NEXT h: PSET (X - 2, Y + 1), c
PSET (X - 2, Y + 2), c: PSET (X + 2, Y + 2), c
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
eacc: FOR h = X - 1 TO X + 1: PSET (h, Y - 4), c: NEXT h
GOSUB e: RETURN
I: Y = Y + 1: PSET (X, Y - 4), c: FOR V = Y - 2 TO Y + 3: PSET (X, V), c: NEXT V
PSET (X - 1, Y - 2), c: PSET (X - 1, Y + 3), c: PSET (X + 1, Y + 3), c
Y = Y - 1: X = X + 6: RETURN
M: Y = Y + 1: X = X + 1: FOR V = Y - 3 TO Y + 3
PSET (X - 3, V), c: PSET (X, V), c: PSET (X + 3, V), c: NEXT V
FOR h = X - 3 TO X + 3: PSET (h, Y - 2), c: NEXT h: X = X + 8: Y = Y - 1: RETURN
N: Y = Y + 1: PSET (X - 2, Y - 3), c: PSET (X, Y - 3), c: PSET (X + 1, Y - 3), c
FOR V = Y - 2 TO Y + 3: PSET (X - 1, V), c: NEXT V
FOR V = Y - 2 TO Y + 3: PSET (X + 2, V), c: NEXT V: Y = Y - 1: X = X + 7: RETURN
O: Y = Y + 1: FOR V = Y - 2 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR V = Y - 2 TO Y + 2: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
S: Y = Y + 1: FOR h = X - 1 TO X + 1: PSET (h, Y - 3), c: NEXT h
PSET (X - 2, Y - 2), c: PSET (X + 2, Y - 2), c: PSET (X - 2, Y - 1), c
FOR h = X - 1 TO X + 1: PSET (h, Y), c: NEXT h: PSET (X + 2, Y + 1), c
PSET (X - 2, Y + 2), c: PSET (X + 2, Y + 2), c
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
U: Y = Y + 1: FOR V = Y - 3 TO Y + 2: PSET (X - 2, V), c: NEXT V
FOR V = Y - 3 TO Y + 2: PSET (X + 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h: Y = Y - 1: X = X + 7: RETURN
z: Y = Y + 1: FOR h = X - 2 TO X + 3: PSET (h, Y + 3), c: NEXT h
FOR h = X - 2 TO X + 3: PSET (h, Y - 3), c: NEXT h
V = Y + 3: FOR h = X - 2 TO X + 3: PSET (h, V), c: V = V - 1: NEXT h
Y = Y - 1: X = X + 7: RETURN
dix: GOSUB g1: GOSUB g0: RETURN
vgt: GOSUB g2: GOSUB g0: RETURN
cinqnte: GOSUB g5: GOSUB g0: RETURN
cent: GOSUB dix: GOSUB g0: RETURN
deuxct: GOSUB vgt: GOSUB g0: RETURN
cinqct: GOSUB cinqnte: GOSUB g0: RETURN
dot: PSET (X, Y + 3), c: X = X + 5: RETURN
apos: PSET (X, Y - 3), c: PSET (X, Y - 2), c: X = X + 7: RETURN
moins: FOR h = X - 2 TO X + 2: PSET (h, Y), c: NEXT h: RETURN
plus: FOR h = X - 2 TO X + 2: PSET (h, Y), c: NEXT h
FOR V = Y - 2 TO Y + 2: PSET (X, V), c: NEXT V: RETURN
micro: Y = Y + 1: FOR V = Y - 3 TO Y + 5: PSET (X - 2, V), c: NEXT V
FOR h = X - 1 TO X + 1: PSET (h, Y + 3), c: NEXT h
FOR V = Y - 2 TO Y + 4: PSET (X + 2, V), c: NEXT V: X = X + 7: Y = Y - 1: RETURN
pt2: PSET (X, Y + 2), c: PSET (X, Y - 1), c: RETURN
trt: Y = Y + 7: FOR hor = X - 3 TO X + 4: PSET (hor, Y), c: NEXT hor
FOR hor = X - 3 TO X + 4: PSET (hor, Y + 1), c: NEXT hor: Y = Y - 7: RETURN
tirt: FOR hor = X - 2 TO X + 3: PSET (hor, Y + 1), c: NEXT hor
FOR hor = X - 2 TO X + 3: PSET (hor, Y), c: NEXT hor: X = X + 9: RETURN
pintr: FOR h = X - 1 TO X + 2: PSET (h, Y - 4), c: NEXT h
FOR V = Y TO Y + 2: PSET (X, V), c: NEXT V
FOR V = Y - 2 TO Y - 1: PSET (X + 3, V), c: NEXT V
PSET (X - 2, Y - 3), c: PSET (X + 3, Y - 3), c: PSET (X, Y + 4), c
FOR h = X + 1 TO X + 2: PSET (h, Y), c: NEXT h: RETURN
inst: GOSUB Um: GOSUB Nm: X = X + 9: GOSUB Im: GOSUB Nm: GOSUB Sm: GOSUB Tm
GOSUB Am: GOSUB Nm: GOSUB Tm: X = X + 9: GOSUB Sm: GOSUB Vm: GOSUB Pm: RETURN
charge: Mouse 0: LINE (0, 0)-(639, 479), 3, BF
a = 200: B = 130: aa = 440: bb = 200: cf = 7: GOSUB boite
X = 263: Y = 165: c = 0: GOSUB inst: X = 264: GOSUB inst: RETURN
retourmenu: GOSUB charge: CHAIN "minilab\MINILAB2.bas"
graph: GOSUB charge: CHAIN "minilab\graf.bas"
schema: GOSUB charge: CHAIN "minilab\schemas.bas"
databk: GOSUB charge: CHAIN "minilab\dtbook.bas"
modmemo: GOSUB charge: CHAIN "minilab\memo.bas"
minilab: GOSUB Mm: GOSUB Im: GOSUB Nm: GOSUB Im: GOSUB Lm: GOSUB Am: GOSUB Bm: RETURN
generat: GOSUB Gm: GOSUB eacc: GOSUB N: GOSUB eacc: GOSUB r: GOSUB a: X = X + 1:
GOSUB T: GOSUB e: GOSUB U: GOSUB r: X = X + 7: GOSUB D: GOSUB e: X = X + 7
GOSUB Sm: X = X - 1: GOSUB I: GOSUB g: GOSUB N: GOSUB a: GOSUB U: GOSUB X: RETURN
CHANGE: GOSUB Cm: GOSUB Hm: GOSUB Am: GOSUB Nm: GOSUB Gm: GOSUB Em
GOSUB rm: X = X + 7: RETURN
refaire: GOSUB rm: GOSUB Em: GOSUB Fm: GOSUB Am: GOSUB Im: GOSUB rm
GOSUB Em: RETURN
graf: GOSUB Gm: GOSUB rm: GOSUB Am: GOSUB Pm: GOSUB Hm: GOSUB Em: RETURN
dbook: GOSUB Dm: GOSUB Am: GOSUB Tm: GOSUB Am: GOSUB Bm: GOSUB Om
GOSUB Om: GOSUB Km: RETURN
schem: GOSUB Sm: GOSUB Cm: GOSUB Hm: GOSUB Em: GOSUB Mm: GOSUB Am
GOSUB Sm: RETURN
memo: GOSUB Mm: GOSUB Em: GOSUB Mm: GOSUB Om: RETURN
menu: GOSUB Mm: GOSUB Em: GOSUB Nm: GOSUB Um: RETURN
sod: c = 12: GOSUB Dm: X = X - 1: c = 5: GOSUB Om: c = 14: GOSUB Sm: RETURN
OK: GOSUB Om: GOSUB Km: RETURN
Hz: GOSUB Hm: GOSUB z: RETURN
scop: GOSUB Sm: GOSUB Cm: GOSUB Om: GOSUB Pm: GOSUB Em: RETURN
calibroto: GOSUB Cm: GOSUB Am: GOSUB Lm: GOSUB Im: GOSUB Bm: GOSUB rm
GOSUB Em: GOSUB Sm: X = X + 8: GOSUB Am: GOSUB Um: GOSUB Tm: GOSUB Om: RETURN
reglages: GOSUB rm: GOSUB Em: GOSUB Gm: GOSUB Lm: GOSUB Am: GOSUB Gm
GOSUB Em: GOSUB Sm: RETURN
quit: GOSUB Qm: GOSUB Um: GOSUB Im: GOSUB Tm: GOSUB Tm: GOSUB Em
GOSUB rm: RETURN
oui: GOSUB Om: GOSUB Um: GOSUB Im: RETURN
non: GOSUB Nm: GOSUB Om: GOSUB Nm: RETURN
timebase: GOSUB Bm: X = X - 1: GOSUB a: GOSUB S: GOSUB e: X = X + 7: GOSUB D
GOSUB e: X = X + 7: GOSUB T: GOSUB e: GOSUB M: GOSUB P: GOSUB S: GOSUB pt2
RETURN
amplitude: GOSUB Am: GOSUB M: GOSUB P: GOSUB l: GOSUB I
GOSUB T: GOSUB U: GOSUB D: GOSUB e: X = X + 4: RETURN
sigal: GOSUB Sm: GOSUB I: GOSUB g: GOSUB N: GOSUB a: GOSUB l: X = X + 7: RETURN
pardiv: GOSUB P: GOSUB a: GOSUB r: X = X + 7: GOSUB Dm: GOSUB Im: GOSUB Vm: RETURN
frequence: GOSUB Fm: GOSUB r: GOSUB eacc: GOSUB q: GOSUB U
GOSUB e: GOSUB N: GOSUB c: GOSUB e: X = X + 4: RETURN
rapportcy: GOSUB rm: GOSUB a: GOSUB P: GOSUB P: GOSUB O: GOSUB r: GOSUB T
X = X + 7: GOSUB Cm: GOSUB Y: GOSUB c: GOSUB l: GOSUB I: GOSUB q: GOSUB U
GOSUB e: X = X + 4: RETURN
facteuratt: GOSUB Fm: GOSUB a: GOSUB c: GOSUB T: GOSUB e: GOSUB U: GOSUB r
X = X + 7: GOSUB D: GOSUB apos: GOSUB a: GOSUB T: GOSUB T: GOSUB eacc: GOSUB N
GOSUB U: GOSUB a: GOSUB T: GOSUB I: GOSUB O: GOSUB N: RETURN
mode: GOSUB Mm: GOSUB Om: GOSUB Dm: GOSUB Em: X = X + 8: RETURN
MONO: GOSUB Mm: GOSUB Om: X = X + 1: GOSUB Nm: GOSUB Om: X = X + 8: RETURN
ou: GOSUB O: GOSUB U: X = X + 8: RETURN
en: GOSUB e: GOSUB N: X = X + 8: RETURN
DUAL: GOSUB Dm: GOSUB Um: GOSUB Am: GOSUB Lm: X = X + 10: RETURN
SinCarTri: GOSUB trt: GOSUB Sm: GOSUB I: GOSUB N: GOSUB U: GOSUB S: X = X + 7
GOSUB trt: GOSUB Cm: GOSUB a: GOSUB r: GOSUB r: GOSUB eacc: X = X + 7
GOSUB trt: GOSUB Tm: GOSUB r: GOSUB I: GOSUB a: GOSUB N: GOSUB g: GOSUB l
GOSUB e: X = X + 5: GOSUB pintr: RETURN
mv: GOSUB M: GOSUB Vm: X = X + 8: RETURN
URI: c = 12: GOSUB Um: c = 3: GOSUB egal: c = 2: GOSUB rm: c = 9: GOSUB Im: RETURN
707 : c = 4: GOSUB dot: GOSUB g7: GOSUB g0: GOSUB g7: RETURN
PUI: c = 13: GOSUB Pm: GOSUB egal: c = 12: GOSUB Um: GOSUB Im: RETURN
REM ...............................................................
Entree: Mouse 1
DO: Clic ClickDelay
f$ = INKEY$: f$ = UCASE$(f$)
LOOP UNTIL B% <> Bx% OR LEN(f$)
Mouse 0
IF Y% > 55 AND Y% < 61 THEN GOSUB TestIcon
RETURN
TestIcon:
IF X% > 6 AND X% < 13 THEN GOTO recomm
IF X% > 15 AND X% < 22 THEN GOTO graph
IF X% > 22 AND X% < 29 THEN GOTO schema
IF X% > 29 AND X% < 34 THEN GOTO databk
IF X% > 35 AND X% < 40 THEN GOTO modmemo
IF X% > 40 AND X% < 47 THEN GOTO retourmenu
IF X% > 47 AND X% < 52 THEN SYSTEM
RETURN
MonoDual:
IF X% > 34 AND X% < 40 THEN f$ = "M"
IF X% > 42 AND X% < 48 THEN f$ = "D"
RETURN
SiCaTr:
IF X% > 15 AND X% < 21 THEN f$ = "S"
IF X% > 21 AND X% < 26 THEN f$ = "C"
IF X% > 26 AND X% < 34 THEN f$ = "T"
RETURN
AmpliSignal1:
IF X% > 20 AND X% < 24 THEN f$ = "M"
IF X% > 29 AND X% < 33 THEN f$ = "V"
RETURN
FreqSignal1:
IF X% > 21 AND X% < 24 THEN f$ = "H"
IF X% > 24 AND X% < 28 THEN f$ = "K"
IF X% > 28 AND X% < 33 THEN f$ = "M"
RETURN
RcOkCh1:
IF X% > 20 AND X% < 23 THEN f$ = "O"
IF X% > 23 AND X% < 32 THEN f$ = "C"
RETURN
SiCaTr2:
IF X% > 47 AND X% < 53 THEN f$ = "S"
IF X% > 53 AND X% < 58 THEN f$ = "C"
IF X% > 58 AND X% < 66 THEN f$ = "T"
RETURN
AmpliSignal2:
IF X% > 52 AND X% < 57 THEN f$ = "M"
IF X% > 60 AND X% < 65 THEN f$ = "V"
RETURN
RcOkCh2:
IF X% > 53 AND X% < 55 THEN f$ = "O"
IF X% > 55 AND X% < 63 THEN f$ = "C"
RETURN
TestMouse:
IF X% > 46 AND X% < 51 THEN GOSUB ReglMoins
IF X% > 71 AND X% < 76 THEN GOSUB ReglPlus
IF X% > 67 AND X% < 70 AND Y% > 5 AND Y% < 8 THEN GOSUB QuitOuiNon
RETURN
ReglMoins:
IF Y% > 23 AND Y% < 27 THEN GOTO Ampli1Moins
IF Y% > 27 AND Y% < 31 THEN GOTO Feq1Moins
IF Y% > 31 AND Y% < 35 THEN GOTO RC1Moins
IF Y% > 38 AND Y% < 42 THEN GOTO Ampli2Moins
IF Y% > 42 AND Y% < 46 THEN GOTO Feq2Moins
IF Y% > 46 AND Y% < 50 THEN GOTO RC2Moins
IF Y% > 53 AND Y% < 57 THEN GOTO FacteurMoins
RETURN
ReglPlus:
IF Y% > 23 AND Y% < 27 THEN GOTO Ampli1Plus
IF Y% > 27 AND Y% < 31 THEN GOTO Feq1Plus
IF Y% > 31 AND Y% < 35 THEN GOTO RC1Plus
IF Y% > 38 AND Y% < 42 THEN GOTO Ampli2Plus
IF Y% > 42 AND Y% < 46 THEN GOTO Feq2Plus
IF Y% > 46 AND Y% < 50 THEN GOTO RC2Plus
IF Y% > 53 AND Y% < 57 THEN GOTO FacteurPlus
RETURN
FacteurPlus: Facteur% = Facteur% + 1
IF Facteur% > 9 THEN Facteur% = 9: RETURN
LINE (fa, 426)-(fa + 20, 444), 7, BF
fa = fa + 20
LINE (fa, 426)-(fa + 20, 444), 0, B: LINE (fa + 1, 443)-(fa + 1, 427), 15
LINE -(fa + 19, 427), 15: Clic ClickDelay
RETURN
FacteurMoins: Facteur% = Facteur% - 1
IF Facteur% < 1 THEN Facteur% = 1: RETURN
LINE (fa, 426)-(fa + 20, 444), 7, BF
fa = fa - 20
LINE (fa, 426)-(fa + 20, 444), 0, B: LINE (fa + 1, 443)-(fa + 1, 427), 15
LINE -(fa + 19, 427), 15: Clic ClickDelay
RETURN
QuitOuiNon: a = 350: aa = 610: B = 81: bb = 150:
LINE (a, B)-(aa, bb), 9, BF: cf = 12: GOSUB boite
LINE (a, B - 20)-(aa, bb), 0, B: LINE (a + 1, B - 19)-(aa - 1, B - 1), 4, BF
X = 449: Y = B - 10: c = 15: GOSUB quit: X = 450: GOSUB quit
Y = B + 31: LINE (a + 40, B + 25)-(a + 50, B + 35), 0, B
c = 0: X = a + 60: GOSUB trt: GOSUB oui: X = a + 61: GOSUB oui
LINE (aa - 40, B + 25)-(aa - 50, B + 35), 0, B
X = aa - 80: GOSUB non: X = aa - 81: GOSUB trt: GOSUB non
ChoixQuit:
Mouse 1
DO: Clic ClickDelay
f$ = INKEY$: f$ = UCASE$(f$)
LOOP UNTIL B% <> Bx% OR LEN(f$)
Mouse 0
IF Y% > 13 AND Y% < 16 AND X% > 49 AND X% < 52 THEN f$ = "O"
IF Y% > 13 AND Y% < 16 AND X% > 69 AND X% < 74 THEN f$ = "N"
a = 350: aa = 610: B = 81: bb = 150: LINE (a, B - 20)-(aa, bb), 9, BF
B = 150: bb = 475
LINE (a, B - 20)-(aa, bb), 0, B: LINE (a + 1, B - 19)-(aa - 1, B - 1), 1, BF
X = 445: Y = B - 10: c = 15: GOSUB reglages: X = 446: GOSUB reglages
LINE (a, B)-(aa, B), 0
IF f$ = "O" THEN GOTO debut
IF f$ = "N" THEN RETURN
RETURN AttMouse
REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TraiteErreur: BEEP: Mouse 0
a = 100: aa = 540: B = 150: bb = 320: LINE (a, B)-(aa, bb), 0, BF
LINE (a, B)-(aa, bb), 12, B: LINE (a, B + 30)-(aa, B + 30), 12, B
COLOR 12: LOCATE 11, 38: PRINT "ERREUR"
CodErr$ = STR$(ERR): NoCode$ = "Code d'erreur :"
IF ERR < 25 OR ERR = 26 THEN ME$ = "Erreur interne au programme"
IF ERR > 28 OR ERR < 53 THEN ME$ = "Erreur interne au programme"
IF ERR = 25 THEN ME$ = "Périphérique absent ou éteint"
IF ERR = 27 THEN ME$ = "Imprimante : Attente papier..."
IF ERR = 53 THEN ME$ = "Fichier absent !"
IF ERR = 57 THEN ME$ = "Erreur de périphérique E / S"
IF ERR = 61 THEN ME$ = "Disque saturé"
IF ERR = 68 THEN ME$ = "Périphérique non disponible"
IF ERR = 75 OR ERR = 76 THEN ME$ = "Erreur de chemin d'accès au fichier"
COLOR 12: LOCATE 14, (80 - LEN(ME$)) / 2: PRINT ME$
COLOR 14: LOCATE 16, (78 - LEN(NoCode$)) / 2: PRINT NoCode$; CodErr$
Message$ = "Appuyez sur une touche pour continuer..."
COLOR 12: LOCATE 18, (80 - LEN(Message$)) / 2: PRINT Message$: SLEEP 2
DO: f$ = INKEY$: LOOP UNTIL LEN(f$)
COLOR 15: RESUME debuter
MS.Data:
DATA 55,8b,ec,56,57,8b,76,0c,8b,04,8b,76,0a,8b,1c,8b,76,08,8b,0c
DATA 8b,76,06,8b,14,cd,21,8b,76,0c,89,04,8b,76,0a,89,1c
DATA 8b,76,08,89,0c,8b,76,06,89,14,5f,5e,5d,ca,08,00,#
DEFSNG A-Z
SUB Clic (ClickDelay%)
GetMouse
B% = 0
FOR T = 0 TO ClickDelay%: NEXT T
GetMouse
END SUB
SUB GetMouse
r% = Interr%(&H33, 3, Bx%, CX%, DX%)
B% = Bx%: X% = CX% / 8 + 1: Y% = DX% / 8 + 1
END SUB
SUB IconDataBook (a, B)
LINE (a + 10, B)-(a + 23, B + 20), 0, B
LINE (a + 10, B + 7)-(a + 23, B + 20), 0, BF: CIRCLE (a + 16, B + 3), 2, 0
LINE (a + 10, B + 10)-(a + 23, B + 10), 7
LINE (a + 11, B + 21)-(a + 12, B + 30), 7, B
LINE (a + 21, B + 21)-(a + 22, B + 30), 7, B
LINE (a + 16, B + 21)-(a + 17, B + 30), 7, B
LINE (a + 25, B + 12)-(a + 33, B + 18), 7, BF
LINE (a + 25, B + 11)-(a + 33, B + 19), 8, B
LINE (a + 25, B + 19)-(a + 35, B + 19), 8
LINE (a + 27, B + 19)-(a + 24, B + 30), 8
LINE (a + 31, B + 19)-(a + 34, B + 30), 8
LINE (a + 29, B + 20)-(a + 29, B + 30), 8
END SUB
SUB IconGraf (a, B)
LINE (a + 3, B + 1)-(a + 3, B + 30), 0: LINE (a, B + 27)-(a + 40, B + 27), 0
FOR I = B + 24 TO B STEP -6: LINE (a + 2, I)-(a + 3, I), 0: NEXT I
FOR I = a + 6 TO a + 40 STEP 6: LINE (I, B + 27)-(I, B + 28), 0: NEXT I
LINE (a + 7, B + 23)-(a + 18, B + 5), 12: LINE -(a + 25, B + 19), 12
LINE -(a + 36, B + 3), 12
END SUB
SUB IconQuitter (a, B)
LINE (a + 1, B + 8)-(a + 23, B + 22), 7, BF
LINE (a + 24, B + 4)-(a + 24, B + 26), 7
LINE -(a + 35, B + 15), 7: LINE -(a + 24, B + 4), 7
PAINT (a + 26, B + 15), 7, 7
LINE (a, B + 8)-(a, B + 23), 0: LINE -(a + 23, B + 23), 0
LINE -(a + 23, B + 27), 0: LINE (a + 23, B + 4)-(a + 23, B + 7), 0
END SUB
SUB IconRefaire (a, B)
LINE (a, B)-(a + 40, B + 30), 8, B
LINE (a + 1, B + 1)-(a + 39, B + 29), 3, BF
LINE (a + 5, B + 5)-(a + 35, B + 25), 7, BF
PSET (a + 2, B + 2), 12: DRAW "c12 R15 G5 F15 G5 H15 G5 U15"
PSET (a + 3, B + 1), 4: DRAW "c4 R16 G5 F15 G5"
PAINT (a + 5, B + 4), 12, 12
END SUB
SUB IconSchema (a, B)
LINE (a, B)-(a + 40, B + 30), 0, BF
LINE (a + 7, B + 5)-(a + 7, B + 25), 13: LINE -(a + 22, B + 15), 13
LINE -(a + 7, B + 5), 13: LINE (a + 23, B + 15)-(a + 29, B + 15), 12
LINE (a + 30, B + 13)-(a + 30, B + 17), 14
LINE (a + 32, B + 13)-(a + 32, B + 17), 14
LINE (a + 33, B + 15)-(a + 40, B + 15), 12
LINE (a + 35, B)-(a + 35, B + 7), 10: LINE -(a + 37, B + 7), 10
LINE -(a + 37, B), 10: LINE (a + 36, B + 8)-(a + 36, B + 14), 10
LINE (a, B + 9)-(a + 6, B + 9), 12: LINE (a, B + 20)-(a + 6, B + 20), 12
LINE (a + 16, B)-(a + 16, B + 10), 12
LINE (a + 16, B + 20)-(a + 16, B + 30), 12
END SUB
FUNCTION Interr% (Num%, AX%, Bx%, CX%, DX%)
IF MS%(0) = 0 THEN '** est-ce que MS%() est initialisé ?
PRINT "ERREUR : le programme machine est absent ! Arrêt !"
END
END IF
DEF SEG = VARSEG(MS%(0))
POKE VARPTR(MS%(0)) + 26, Num%
CALL ABSOLUTE(AX%, Bx%, CX%, DX%, VARPTR(MS%(0)))
Interr% = AX%
END FUNCTION
SUB Mouse (OnOff%)
IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
r% = Interr%(&H33, OnOff%, Bx%, CX%, DX%)
END SUB
SUB MouseSpeed (Curseur%)
r% = Interr%(&H33, 15, Bx%, Curseur%, Curseur%)
END SUB
SUB ReadData
RESTORE MS.Data
DEF SEG = VARSEG(MS%(0))
FOR I% = 0 TO 99
READ Byte$
IF Byte$ = "#" THEN EXIT FOR
POKE VARPTR(MS%(0)) + I%, VAL("&H" + Byte$)
NEXT I%
END SUB
SUB ResetMouse
r% = Interr%(&H33, 0, Bx%, CX%, DX%)
r% = Interr%(&H33, 1, Bx%, CX%, DX%)
END SUB
SUB SaisieNum (Num$, lo%, X%, Y%)
IF Y% = 0 THEN Y% = CSRLIN
IF X% = 0 THEN Y% = POS(0)
xc% = 1
Ed$ = Num$
BoucleSaisie:
DO
IF xc% > lo% THEN xc% = lo%
LOCATE Y%, X%, 0
PRINT MID$(Ed$ + STRING$(lo%, "_"), 1, lo%);
LOCATE Y%, X% + xc% - 1, 1, 5 * ins%, 7
DO
key$ = INKEY$
LOOP UNTIL LEN(key$)
r$ = MID$(Ed$, xc%)
IF LEN(key$) = 2 THEN
sk% = ASC(RIGHT$(key$, 1))
SELECT CASE sk%
CASE 75
xc% = xc% - 1
IF xc% = 0 THEN xc% = 1
CASE 77
xc% = xc% + 1
IF xc% > LEN(Ed$) + 1 THEN xc% = LEN(Ed$) + 1
CASE 83
IF xc% < LEN(Ed$) + 1 THEN Ed$ = LEFT$(Ed$, xc% - 1) + MID$(r$, 2)
CASE ELSE
END SELECT
ELSE
k% = ASC(key$)
SELECT CASE k%
CASE 9
CASE 13
Num$ = Ed$
EXIT DO
CASE 8
IF xc% > 1 THEN
Ed$ = LEFT$(Ed$, xc% - 2) + r$
xc% = xc% - 1
END IF
CASE ELSE
Ed$ = LEFT$(Ed$, xc% - 1) + key$
IF ins% THEN
Ed$ = Ed$ + r$
ELSE
IF LEN(r$) THEN Ed$ = Ed$ + MID$(r$, 2)
END IF
Ed$ = LEFT$(Ed$, lo%)
xc% = xc% + 1
END SELECT
END IF
LOOP
LOCATE , , 0
END SUB