home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 12
/
CD_ASCQ_12_0294.iso
/
maj
/
2364
/
minilab
/
logbook.bas
< prev
next >
Wrap
BASIC Source File
|
1994-02-21
|
30KB
|
810 lines
DEFINT A-Z
DECLARE SUB IconAide (A, B)
DECLARE SUB IconBook (A, B)
DECLARE SUB IconPrinter (A, B)
DECLARE SUB Editeur (Texte$, lo%, x%, y%, CoulTxt%)
DECLARE SUB TextBoxEcrireLire ()
DECLARE SUB Clic (ClickDelay%)
DECLARE SUB Mouse (OnOff%)
DECLARE SUB ResetMouse ()
DECLARE SUB MouseSpeed (Curseur%)
DECLARE SUB GetMouse ()
DECLARE SUB SetMouse (x%, y%)
DECLARE SUB TestPrinterStatus ()
DECLARE SUB ReadData ()
DECLARE FUNCTION Interr% (Num%, AX%, Bx%, cx%, DX%)
CLEAR
' $DYMAMIC:
dummy = FRE("")
DIM SHARED MS%(45)
DIM Page$(23) 'AS STRING * 68 !!!
DIM ListePages(212) AS STRING * 12
DIM TextToPrint(23) AS STRING * 68
DIM SHARED A, B, x%, y%, Key$, CoulTxt%, P%
ReadData
FlchUp1$ = CHR$(0) + CHR$(72): FlchUp2$ = CHR$(0) + CHR$(73) 'Up2=PgUp
FlchDw1$ = CHR$(0) + CHR$(80): FlchDw2$ = CHR$(0) + CHR$(81) 'Dw2=PgDw
CoulTxt% = 15
E$ = SPACE$(68)
SCREEN 12
ON ERROR GOTO TraiteErreur
OPEN "Minilab\SETUP.INI" FOR INPUT AS #1
SEEK #1, 1
INPUT #1, CoulBarreTitre, CoulLettresTitre, CoulZoneTravail
INPUT #1, VitesseSouris, ClickDelay
CLOSE #1
Debuter: COLOR 15
LINE (3, 3)-(636, 28), CoulBarreTitre, BF
LINE (3, 61)-(636, 476), CoulZoneTravail, BF
LINE (3, 29)-(636, 29), 15
C = CoulLettresTitre: x = 25: y = 14: GOSUB Minilab: x = 26: GOSUB Minilab
x = 282: GOSUB LogBook: x = 283: GOSUB LogBook
LINE (3, 31)-(636, 60), 7, BF: LINE (3, 59)-(636, 59), 15
LINE (3, 61)-(55, 478), 15, BF: LINE (54, 61)-(54, 478), 7
LINE (0, 0)-(639, 479), 0, B: LINE (1, 1)-(638, 478), 7, B
LINE (2, 2)-(637, 477), 0, B
C = 4: y = 44
x = 25: GOSUB Ecrire: GOSUB Lire: x = 26: GOSUB Ecrire: GOSUB Lire: x = 25: GOSUB trt
x = 140: GOSUB Imprimer: x = 141: GOSUB Imprimer: x = 154: GOSUB trt
x = 230: GOSUB Aide: x = 231: GOSUB Aide: x = 230: GOSUB trt
C = 9: x = 465: GOSUB M: GOSUB E: GOSUB trt: GOSUB N: GOSUB U: x = 466: GOSUB unem
C = 0: x = 566: GOSUB trt: x = 565: GOSUB quit: x = 566: GOSUB quit
IconBook 8, 80
IconPrinter 8, 120
IconAide 8, 160
A = 8: B = 365: LINE (A, B)-(A + 40, B + 30), 0, B 'Icone menu
LINE (A + 2, B + 2)-(A + 38, B + 11), 9, BF
x = 14: y = 371: C = 15: GOSUB unem: x = 15: GOSUB unem
LINE (A + 2, B + 13)-(A + 38, B + 24), 7, BF
A = 8: B = 405: LINE (A + 1, B + 8)-(A + 23, B + 22), 7, BF 'DOS
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
C = 12: x = A + 5: y = B + 16: GOSUB sod: C = 12: x = A + 6: GOSUB sod
AttenteDebut:
ResetMouse
Curseur% = VitesseSouris
MouseSpeed Curseur%
AttChoix: 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$ = "E" THEN GOTO LireEcrire
IF f$ = "P" THEN GOTO Printer
IF f$ = "A" THEN GOTO Help
IF f$ = "N" THEN GOTO Menu
IF f$ = "Q" THEN GOTO RetourDos
GOTO AttChoix: END
REM ..............................................................
LireEcrire: A = 210: AA = 445: B = 130: bb = 305: cf = 0: GOSUB Box
TextBoxEcrireLire
AttChoix2: Mouse 1: DO: GetMouse: f$ = INKEY$: f$ = UCASE$(f$)
LOOP UNTIL B% <> Bx% OR LEN(f$)
Mouse 0
IF B% = 1 THEN GOSUB TestEcrire
IF f$ = "M" THEN GOTO PageModele
IF f$ = "N" THEN GOTO NouvellePage
IF f$ = "C" THEN GOTO Consulter
IF f$ = "Q" THEN
LINE (210, 130)-(445, 365), CoulZoneTravail, BF
GOTO AttChoix
END IF
GOTO AttChoix2: END
'..................................
NouvellePage: A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box
NoLigne% = 1
FOR i = 1 TO 23: Page$(i) = "": NEXT i 'page blanche!
GOSUB SaisieTexte
GOSUB Sauvegarde
LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
'.................................................................
PageModele: A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box
Mois$ = LEFT$(DATE$, 2)
Jour$ = MID$(DATE$, 4, 2) + " ": GOSUB TestJour
Annee$ = RIGHT$(DATE$, 2)
Heure$ = LEFT$(TIME$, 5)
GOSUB MoisEnLettres
InsereDate$ = "Date: " + Jour$ + Mois$ + " " + Annee$
LongDate = LEN(InsereDate$)
esp$ = SPACE$(56 - LongDate)
GOSUB MoisEnLettres
Page$(1) = InsereDate$ + esp$ + "Heure: " + Heure$
COLOR 15: LOCATE 6, 10: PRINT Page$(1)
NoLigne% = 2
FOR i = 2 TO 23: Page$(i) = "": NEXT i
GOSUB SaisieTexte
GOSUB Sauvegarde
LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
'............................
Consulter: coul = 14: GOSUB ChoiceBox
x = 289: y = B + 14: C = 0: GOSUB Consult: x = 290: GOSUB Consult
GOSUB SelectPageInList
AttenteConsulter:
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
IF K$ = FlchDw1$ THEN GOSUB SelectBoxDw
IF K$ = FlchUp1$ THEN GOSUB SelectBoxUp
IF K$ = FlchDw2$ THEN GOSUB SuiteListe
IF K$ = FlchUp2$ THEN
numero = numero - 48
IF numero < 1 THEN SOUND 800, .3: numero = 1
FinListe = 0: GOSUB SuiteListe
END IF
IF K$ = CHR$(13) THEN GOSUB TestListePage
IF K$ = "Q" OR K$ = CHR$(27) THEN
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
GOTO AttenteDebut
END IF
GOTO AttenteConsulter
'............................
Printer: coul = 13: GOSUB ChoiceBox
x = 297: y = B + 14: C = 0: GOSUB Imprimer: x = 298: GOSUB Imprimer
GOSUB SelectPageInList
AttentePrinter:
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
IF K$ = FlchDw1$ THEN GOSUB SelectBoxDw
IF K$ = FlchUp1$ THEN GOSUB SelectBoxUp
IF K$ = FlchDw2$ THEN GOSUB SuiteListe
IF K$ = FlchUp2$ THEN
numero = numero - 48
IF numero < 1 THEN SOUND 800, .3: numero = 1
FinListe = 0: GOSUB SuiteListe
END IF
IF K$ = CHR$(13) THEN GOSUB PrintSelectedPage
IF K$ = "Q" OR K$ = CHR$(27) THEN
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
GOTO AttenteDebut
END IF
GOTO AttentePrinter
'.........................................
Help: A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box 'Aide p.1
OPEN "minilab\logbook\AIDE_1.HLP" FOR INPUT AS #1
SEEK #1, 1
FOR Ligne = 1 TO 23
INPUT #1, Page$(Ligne)
COLOR 3: LOCATE 5 + Ligne, 10: PRINT Page$(Ligne)
NEXT Ligne
CLOSE #1
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "Q" OR K$ = "S"
IF K$ = "Q" THEN
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
GOTO AttenteDebut
END IF
A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box 'Aide p.2
OPEN "minilab\logbook\AIDE_2.HLP" FOR INPUT AS #1
SEEK #1, 1
FOR Ligne = 1 TO 23
INPUT #1, Page$(Ligne)
COLOR 3: LOCATE 5 + Ligne, 10: PRINT Page$(Ligne)
NEXT Ligne
CLOSE #1
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "Q" OR K$ = "R"
IF K$ = "Q" THEN
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
GOTO AttenteDebut
END IF
IF K$ = "R" THEN GOTO Help
'.........................................
TestJour: IF LEFT$(Jour$, 1) = "0" THEN
Day$ = MID$(Jour$, 2, 1)
Jour$ = Day$ + " "
END IF: RETURN
MoisEnLettres:
IF Mois$ = "01" THEN Mois$ = "janvier"
IF Mois$ = "02" THEN Mois$ = "février"
IF Mois$ = "03" THEN Mois$ = "mars"
IF Mois$ = "04" THEN Mois$ = "avril"
IF Mois$ = "05" THEN Mois$ = "mai"
IF Mois$ = "06" THEN Mois$ = "juin"
IF Mois$ = "07" THEN Mois$ = "juillet"
IF Mois$ = "08" THEN Mois$ = "août"
IF Mois$ = "09" THEN Mois$ = "septembre"
IF Mois$ = "10" THEN Mois$ = "octobre"
IF Mois$ = "11" THEN Mois$ = "novembre"
IF Mois$ = "12" THEN Mois$ = "décembre"
RETURN
Menu: GOSUB Charge: dummy = FRE(""): CHAIN "minilab\minilab2.bas"
Charge: Mouse 0: A = 200: AA = 440: B = 130: bb = 180: cf = 3: GOSUB Box
x = 263: y = 155: C = 0: GOSUB inst: x = 264: GOSUB inst: RETURN
RetourDos: LINE (175, 150)-(485, 200), CoulZoneTravail, BF
A = 175: AA = 485: B = 150: bb = 200: cf = 12: GOSUB Box
x = 210: y = 175: C = 0: GOSUB RetDos: x = 211: GOSUB RetDos
choix: Mouse 1: DO: GetMouse
f$ = INKEY$: f$ = UCASE$(f$)
LOOP UNTIL B% <> Bx% OR LEN(f$)
IF B% = 1 THEN GOSUB Testquit
Mouse 0
IF f$ = "O" THEN SYSTEM
IF f$ = "N" THEN LINE (175, 150)-(485, 200), CoulZoneTravail, BF: Mouse 1: GOTO AttChoix
GOTO choix
Testquit: Mouse 0
IF y% < 166 OR y% > 184 THEN RETURN choix
IF x% > 343 AND x% < 370 THEN COLOR 15: SYSTEM
IF x% > 398 AND x% < 430 THEN f$ = "N": RETURN
RETURN choix
RetDos: GOSUB r: GOSUB E: GOSUB T: GOSUB O: GOSUB U: GOSUB r: x = x + 9
GOSUB A: GOSUB U: x = x + 9: GOSUB D: GOSUB O: GOSUB S: x = x + 3: GOSUB pintr
x = x + 14: LINE (x, 179)-(x + 9, 170), 0, B: x = x + 20
GOSUB trt: GOSUB O: GOSUB U: GOSUB i: x = x + 12
LINE (x, 179)-(x + 9, 170), 0, B: x = x + 20
GOSUB trt: GOSUB N: GOSUB O: GOSUB N: RETURN
Box: LINE (A, B)-(AA, bb), 0, B: LINE (A + 5, B + 5)-(AA - 5, bb - 5), 0, B
PAINT (A + 3, B + 10), 7, 0: LINE (A + 6, B + 6)-(AA - 6, bb - 6), cf, BF
LINE (A + 1, B + 1)-(A + 1, bb - 1), 15: LINE -(AA - 1, bb - 1), 15
LINE (A + 35, B)-(A + 35, B + 5), 8: LINE (A + 35, bb - 5)-(A + 35, bb - 1), 8
LINE (AA - 35, B)-(AA - 35, B + 5), 8: LINE (AA - 35, bb - 5)-(AA - 35, bb - 1), 8
LINE (A + 1, B + 35)-(A + 5, B + 35), 8: LINE (A + 1, bb - 35)-(A + 5, bb - 35), 8
LINE (AA, B + 35)-(AA - 5, B + 35), 8: LINE (AA, bb - 35)-(AA - 5, bb - 35), 8
RETURN
BarBas: LINE (A + 6, bb - 23)-(AA - 6, bb - 6), 0, B
LINE (A + 7, bb - 22)-(AA - 7, bb - 7), 7, BF
LINE (AA - 7, bb - 22)-(AA - 24, bb - 22), 15: LINE -(AA - 24, bb - 7), 15
LINE -(AA - 7, bb - 7), 8: LINE -(AA - 7, bb - 22), 8
LINE (AA - 12, bb - 18)-(AA - 20, bb - 18), 0: LINE -(AA - 16, bb - 11), 0
LINE -(AA - 12, bb - 18), 0: PAINT (AA - 16, bb - 15), 0, 0
LINE (A + 7, bb - 22)-(A + 24, bb - 22), 15: LINE -(A + 24, bb - 7), 8
LINE -(A + 7, bb - 7), 8: LINE -(A + 7, bb - 22), 15
LINE (A + 12, bb - 11)-(A + 20, bb - 11), 0: LINE -(A + 16, bb - 18), 0
LINE -(A + 12, bb - 11), 0: PAINT (A + 16, bb - 15), 0, 0: RETURN
A: 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
B: FOR V = y - 4 TO y + 4: PSET (x - 2, V), C: NEXT V 'B
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
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 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
D: 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
E: 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
f: 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
G: PSET (x, y - 4), C: PSET (x + 1, y - 4), C 'G
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
i: x = x - 2: FOR V = y - 4 TO y + 4: PSET (x, V), C: NEXT V: x = x + 7: RETURN
K: 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
L: 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
M: 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
N: FOR V = y - 4 TO y + 4: PSET (x - 3, V), C: NEXT V 'N
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
O: 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
P: 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
q: 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
r: 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
S: FOR H = x - 1 TO x + 2: PSET (H, y - 4), C: NEXT H 'S
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
T: 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
U: 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
V: 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
x: 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
PSET (x + 3, y + 4), C: PSET (x + 3, y - 4), C
PSET (x - 3, y + 4), C: PSET (x - 3, y - 4), C: x = x + 9: 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
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
Minilab: GOSUB M: GOSUB i: GOSUB N: GOSUB i: GOSUB L: GOSUB A: GOSUB B: RETURN
LogBook: GOSUB L: GOSUB O: GOSUB G: x = x + 8: GOSUB B: GOSUB O: GOSUB O: GOSUB K: RETURN
quit: GOSUB q: GOSUB U: GOSUB i: GOSUB T: GOSUB T: GOSUB E: GOSUB r: RETURN
Ecrire: GOSUB E: GOSUB C: GOSUB r: GOSUB i: GOSUB r: GOSUB E: DRAW "B R3 E7": RETURN
Lire: x = x + 9: GOSUB L: GOSUB i: GOSUB r: GOSUB E: RETURN
Imprimer: GOSUB i: GOSUB M: GOSUB P: GOSUB r: GOSUB i: GOSUB M
GOSUB E: GOSUB r: RETURN
Consult: GOSUB C: GOSUB O: GOSUB N: GOSUB S: GOSUB U: GOSUB L: GOSUB T
GOSUB E: GOSUB r: RETURN
Efface: GOSUB E: GOSUB f: GOSUB f: GOSUB A: GOSUB C: GOSUB E
GOSUB r: x = x + 6: GOSUB pintr: RETURN
Aide: GOSUB A: GOSUB i: GOSUB D: GOSUB E: RETURN
inst: GOSUB U: GOSUB N: x = x + 9: GOSUB i: GOSUB N: GOSUB S: GOSUB T
GOSUB A: GOSUB N: GOSUB T: x = x + 9: GOSUB S: GOSUB V: GOSUB P: RETURN
unem: GOSUB M: GOSUB E: GOSUB N: GOSUB U: RETURN
sod: C = 12: GOSUB D: x = x - 1: C = 5: GOSUB O: C = 14: GOSUB S: RETURN
TestMouse:
IF x% > 7 AND x% < 49 THEN GOSUB TestIcon
RETURN
TestIcon:
IF y% > 79 AND y% < 111 THEN GOTO LireEcrire
IF y% > 119 AND y% < 151 THEN GOTO Printer
IF y% > 159 AND y% < 191 THEN GOTO Help
IF y% > 364 AND y% < 396 THEN GOTO Menu
IF y% > 408 AND y% < 434 THEN GOTO RetourDos
RETURN
TestEcrire:
IF x% > 228 AND x% < 240 THEN GOSUB TestOptionEcrire
RETURN
TestOptionEcrire:
IF y% > 161 AND y% < 173 THEN GOTO NouvellePage
IF y% > 193 AND y% < 205 THEN GOTO PageModele
IF y% > 225 AND y% < 237 THEN GOTO Consulter
IF y% > 257 AND y% < 269 THEN
LINE (210, 130)-(445, 365), CoulZoneTravail, BF
GOTO AttChoix
END IF
RETURN
TraiteErreur: BEEP: Mouse 0
A = 110: AA = 530: 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 22, 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 28, (80 - LEN(ME$)) / 2: PRINT ME$
COLOR 14: LOCATE 32, (78 - LEN(NoCode$)) / 2: PRINT NoCode$; CodErr$
Message$ = "Appuyez sur une touche pour continuer..."
COLOR 12: LOCATE 36, (80 - LEN(Message$)) / 2: PRINT Message$
DO: f$ = INKEY$: LOOP UNTIL LEN(f$)
RESUME Debuter
REM
MouseData:
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,#
SaisieTexte: DO
Editeur Page$(NoLigne%), 68, 10, 5 + NoLigne%, CoulTxt%
LOCATE 5 + NoLigne%, 10: PRINT E$
COLOR 15: LOCATE 5 + NoLigne%, 10: PRINT Page$(NoLigne%)
SELECT CASE ASC(RIGHT$(Key$, 1))
CASE 72: NoLigne% = NoLigne% + (NoLigne% > 1) ' haut
CASE 80, 13: NoLigne% = NoLigne% - (NoLigne% < 23) ' bas, <Return>
CASE 27: EXIT DO ' ESC = fin
END SELECT
LOOP
RETURN
Sauvegarde:
REM Numéro de Page libre
OPEN "minilab\logbook\PageNo.dat" FOR INPUT AS #1
SEEK #1, 1
INPUT #1, PageNo
PageNo$ = STR$(PageNo): PageNo$ = LTRIM$(PageNo$) 'signe!
NewPageNo = PageNo + 1
CLOSE
REM
IF PageNo > 100 THEN
BEEP
LINE (160, 195)-(495, 305), CoulZoneTravail, BF
A = 160: AA = 495: B = 195: bb = 305: cf = 0: GOSUB Box
COLOR 12
LOCATE 14, 27: PRINT "Il n'y a plus de pages libres !"
COLOR 14:
LOCATE 17, 29: PRINT "Appuyez sur une touche ..."
SLEEP
RETURN
END IF
REM Entrer dans PageNo.dat le numéro d'ordre suivant
OPEN "minilab\logbook\PageNo.dat" FOR OUTPUT AS #1
WRITE #1, NewPageNo
CLOSE
REM Proposer titre par défaut: PAGE1...
NommerFichier:
NomPageDefaut$ = "PAGE_" + PageNo$ + ".LOG"
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
A = 180: AA = 475: B = 130: bb = 265: cf = 0: GOSUB Box
COLOR 7: LOCATE 11, 27: PRINT "Sauvegarder sous: " + NomPageDefaut$
PageTitre$ = NomPageDefaut$
COLOR 14: LOCATE 11, 45: PRINT PageTitre$
COLOR 7: LOCATE 14, 32: PRINT "<OK> <Annuler>"
COLOR 14: LOCATE 14, 33: PRINT "O": LOCATE 14, 44: PRINT "A"
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "O" OR K$ = "A"
IF K$ = "A" THEN
NewPageNo = NewPageNo - 1 'récupérer numéro
OPEN "minilab\logbook\PageNo.dat" FOR OUTPUT AS #2
PRINT #2, NewPageNo
CLOSE #2
RETURN
END IF
REM Créer fichier PAGE_xx.LOG dans \logbook
OPEN "minilab\logbook\" + PageTitre$ FOR OUTPUT AS #1
FOR Ligne = 1 TO 23
WRITE #1, Page$(Ligne)
NEXT Ligne
CLOSE #1
REM Mise à jour Liste du fichier LISTPAGE.DAT
GOSUB RemplirTableauTitresPages
numero = numero + 1
ListePages(numero) = PageTitre$ 'rajouter au tableau
OPEN "minilab\logbook\ListPage.dat" FOR OUTPUT AS #1 'écrire tableau ds fichier
FOR N = 1 TO numero
WRITE #1, ListePages(N): NEXT N
CLOSE
RETURN
RemplirTableauTitresPages:
OPEN "minilab\logbook\ListPage.dat" FOR INPUT AS #1 'lire fichier &
numero = 1
SEEK #1, 1
DO UNTIL EOF(1) = -1
INPUT #1, Titre$: ListePages(numero) = Titre$ 'remplir tableau
numero = numero + 1
LOOP
DernierNo = numero 'pour Renommer
CLOSE #1
RETURN
SelectBoxDw:
LINE (260, sup)-(390, sup + 16), 0, B
sup = sup + 16
IF sup > 334 THEN sup = 334
LineNb = LineNb + 1
LINE (260, sup)-(390, sup + 16), coul, B
RETURN
SelectBoxUp:
LINE (260, sup)-(390, sup + 16), 0, B
sup = sup - 16
IF sup < 158 THEN sup = 158
LineNb = LineNb - 1
LINE (260, sup)-(390, sup + 16), coul, B
RETURN
TestListePage: 'pour consulter une page
numero = LastNumber - (26 - (2 * LineNb))
IF numero > DernierNo THEN
SOUND 800, .3
RETURN
END IF
PageTitre$ = ListePages(numero)
IF PageTitre$ = "" THEN
SOUND 800, .3
RETURN
END IF
A = 60: AA = 634: B = 65: bb = 474: cf = 0: GOSUB Box
OPEN "minilab\logbook\" + PageTitre$ FOR INPUT AS #2
SEEK #2, 1
FOR Ligne = 1 TO 23
INPUT #2, Page$(Ligne)
COLOR 15: LOCATE 5 + Ligne, 10: PRINT Page$(Ligne)
NEXT Ligne
CLOSE #2
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
GOTO AttenteDebut
RETURN
ChoiceBox: LINE (60, 65)-(634, 474), CoulZoneTravail, BF
A = 240: AA = 410: B = 127: bb = 380: cf = 0: GOSUB Box: GOSUB BarBas
LINE (A + 6, B + 6)-(AA - 6, B + 22), coul, BF: RETURN
SelectPageInList:
GOSUB RemplirTableauTitresPages
FinListe = 0
numero = 1
AfficherTitres: COLOR 7
sup = 158
LineNb = 1
FOR Ligne = 0 TO 22 STEP 2
LOCATE 11 + (Ligne / 2), 36: PRINT ListePages(numero)
numero = numero + 2
IF numero >= DernierNo THEN FinListe = 1
NEXT Ligne
LastNumber = numero
LINE (260, sup)-(390, sup + 16), coul, B
RETURN
SuiteListe: LINE (246, 151)-(404, 357), 0, BF
IF FinListe = 0 THEN GOTO AfficherTitres
IF FinListe = 1 THEN
LINE (246, 151)-(404, 357), 0, BF
SOUND 800, .4
COLOR 12
LOCATE 16, 36: PRINT "Fin de liste"
AttenteFinListe: DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
IF K$ = FlchDw2$ THEN SOUND 800, .4
IF K$ = FlchUp2$ THEN
LOCATE 16, 36: PRINT " "
FinListe = 0
numero = LastNumber - 24
GOTO AfficherTitres
END IF
IF K$ = CHR$(27) THEN LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
END IF
GOTO AttenteFinListe
RETURN
PrintSelectedPage: 'pour imprimer une page
TestPrinterStatus 'Tester que printer On line
IF P% = 0 THEN
LINE (60, 65)-(634, 474), CoulZoneTravail, BF
BEEP
A = 180: AA = 460: B = 195: bb = 305: cf = 0: GOSUB Box
COLOR 12: LOCATE 15, 29: PRINT "Imprimante hors service !"
COLOR 14: LOCATE 17, 29: PRINT "Appuyez sur une touche..."
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
GOTO QuitPrint
END IF
numero = LastNumber - (26 - (2 * LineNb)) 'page à imprimer
IF numero > DernierNo THEN
SOUND 800, .3
RETURN
END IF
PageTitre$ = ListePages(numero)
IF PageTitre$ = "" THEN
SOUND 800, .3
RETURN
END IF
LINE (60, 65)-(634, 474), CoulZoneTravail, BF 'Valider ordre d'impression
A = 180: AA = 460: B = 195: bb = 305: cf = 0: GOSUB Box
COLOR 12: LOCATE 15, 30: PRINT "Imprimer "; PageTitre$; " ?"
COLOR 7: LOCATE 17, 30: PRINT "<OK> <Annuler>"
COLOR 14: LOCATE 17, 31: PRINT "O": LOCATE 17, 44: PRINT "A"
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL K$ = "O" OR K$ = "A"
IF K$ = "A" THEN GOTO QuitPrint
OPEN "minilab\logbook\" + PageTitre$ FOR INPUT AS #1
SEEK #1, 1
FOR Ligne = 1 TO 23
INPUT #1, Texte$: TextToPrint(Ligne) = Texte$ 'remplir tableau-tampon
NEXT Ligne
CLOSE
Z1$ = SPACE$(6): Z2$ = "┌": Z3$ = "─"
Z4$ = "┐": Z5$ = "└": Z6$ = "┘": Z7$ = "│"
LongTitre = LEN(PageTitre$)
OPEN "LPT1:" FOR OUTPUT AS #1 'imprimer
PRINT #1,
PRINT #1, Z1$ + Z2$ + STRING$(13 + LongTitre, Z3$) + Z4$
PRINT #1, Z1$ + Z7$ + " LOG BOOK : " + PageTitre$ + " " + Z7$
PRINT #1, Z1$ + Z5$ + STRING$(13 + LongTitre, Z3$) + Z6$
PRINT #1, : PRINT #1,
FOR Ligne = 1 TO 23
TextToPrint(Ligne) = Z1$ + TextToPrint(Ligne)
PRINT #1, TextToPrint(Ligne)
NEXT Ligne
PRINT #1, :
CLOSE
LINE (60, 65)-(634, 474), CoulZoneTravail, BF 'annonce de fin d'impression
A = 155: AA = 490: B = 195: bb = 305: cf = 0: GOSUB Box
COLOR 12: LOCATE 15, 24: PRINT "Impression de "; PageTitre$; " terminée."
COLOR 14: LOCATE 17, 29: PRINT "Appuyez sur une touche..."
DO: K$ = INKEY$: K$ = UCASE$(K$): LOOP UNTIL LEN(K$)
QuitPrint: LINE (60, 65)-(634, 474), CoulZoneTravail, BF: GOTO AttenteDebut
RETURN
DEFSNG A-Z
SUB Clic (ClickDelay%)
GetMouse
FOR T = 0 TO ClickDelay%: NEXT T
END SUB
'DEFINT A-Z
SUB Editeur (Texte$, lo%, x%, y%, CoulTxt%)
xc% = 1 ' position du curseur dans la chaîne
Txt$ = Texte$
BouclEditeur:
DO
IF xc% > lo% THEN xc% = lo%: SOUND 800, .4
r$ = MID$(Txt$, xc%) 'caractères de Txt$ à partir de xc%(curseur)
S$ = MID$(Txt$, xc%, 1) '1er caractère de Txt$ à partir de xc%(curseur)
COLOR CoulTxt%: LOCATE y%, x%
PRINT MID$(Txt$ + STRING$(lo%, "_"), 1, lo%);
COLOR 7: LOCATE y%, x% + xc% - 1: PRINT S$
DO: Key$ = INKEY$: LOOP UNTIL LEN(Key$)
IF LEN(Key$) = 2 THEN
sk% = ASC(RIGHT$(Key$, 1))
SELECT CASE sk%
CASE 72, 80 ' curseur haut/bas
Texte$ = Txt$
EXIT DO
CASE 71: xc% = 1 ' Origine
CASE 79: xc% = LEN(Txt$) + 1 ' Fin
CASE 75 ' curseur à gauche
xc% = xc% - 1
IF xc% = 0 THEN xc% = 1
CASE 77 ' curseur à droite
xc% = xc% + 1
IF xc% > LEN(Txt$) + 1 THEN xc% = LEN(Txt$) + 1: SOUND 800, .4
CASE 82 ' Insertion
ins% = 1 - ins%
CASE 83 '*** Effacement
IF xc% < LEN(Txt$) + 1 THEN Txt$ = LEFT$(Txt$, xc% - 1) + MID$(r$, 2)
CASE ELSE
END SELECT
ELSE
K% = ASC(Key$)
SELECT CASE K%
CASE 13, 27 ' Entrée ou Echappement
CoulTxt% = 15
Texte$ = Txt$
EXIT DO
CASE 8 ' Retour arrière
IF xc% > 1 THEN
Txt$ = LEFT$(Txt$, xc% - 2) + r$
xc% = xc% - 1
END IF
CASE 15
Key$ = CHR$(234)
Txt$ = LEFT$(Txt$, xc% - 1) + Key$ ' Ctrl+O = ohm
xc% = xc% + 1
CASE ELSE ' autre caractère
Txt$ = LEFT$(Txt$, xc% - 1) + Key$
IF ins% THEN
Txt$ = Txt$ + r$
ELSE
IF LEN(r$) THEN Txt$ = Txt$ + MID$(r$, 1)
END IF
Txt$ = LEFT$(Txt$, lo%)
xc% = xc% + 1
END SELECT
END IF
LOOP
END SUB
SUB GetMouse
r% = Interr%(&H33, 3, Bx%, cx%, DX%)
B% = Bx%: x% = cx%: y% = DX%
END SUB
DEFINT A-Z
SUB IconAide (A, B)
LINE (A, B + 15)-(A + 40, B + 30), 9, B
CIRCLE (A + 20, B + 15), 13, 7: CIRCLE (A + 20, B + 15), 8, 7
LINE (A + 17, B + 3)-(A + 23, B + 7), 12, BF
LINE (A + 17, B + 27)-(A + 23, B + 23), 12, BF
LINE (A + 7, B + 12)-(A + 12, B + 18), 12, BF
LINE (A + 34, B + 12)-(A + 28, B + 18), 12, BF
END SUB
SUB IconBook (A, B)
LINE (A, B)-(A + 40, B + 30), 0, BF
LINE (A + 2, B + 2)-(A + 18, B + 28), 15, BF
LINE (A + 2, B + 2)-(A + 18, B + 28), 7, B
LINE (A + 22, B + 2)-(A + 38, B + 28), 15, BF
LINE (A + 22, B + 2)-(A + 38, B + 28), 7, B
FOR i = 5 TO 25 STEP 5: LINE (A + 17, B + i)-(A + 23, B + i + 1), 7, BF: NEXT i
FOR L = 5 TO 25 STEP 2
LINE (A + 5, B + L)-(A + 15, B + L), 0: LINE (A + 25, B + L)-(A + 35, B + L), 0: NEXT L
END SUB
SUB IconPrinter (A, B)
LINE (A, B)-(A + 40, B + 30), 0, B
LINE (A + 12, B + 3)-(A + 28, B + 13), 0, B
LINE (A + 7, B + 14)-(A + 34, B + 16), 8, B
LINE (A + 5, B + 17)-(A + 35, B + 26), 8, B
LINE (A + 6, B + 27)-(A + 34, B + 27), 8
PSET (A + 30, B + 20), 10
END SUB
DEFSNG A-Z
FUNCTION Interr% (Num%, AX%, Bx%, cx%, DX%)
IF MS%(0) = 0 THEN SYSTEM
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%)
'Mouse 1 = pointeur allumé / Mouse 0 = éteindre pointeur
IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
r% = Interr%(&H33, OnOff%, Bx%, cx%, DX%)
END SUB
DEFINT A-Z
SUB MouseSpeed (Curseur%)
r% = Interr%(&H33, 15, Bx%, Curseur%, Curseur%) '(1=rapide, 100=lent)
END SUB
DEFSNG A-Z
SUB ReadData
RESTORE MouseData
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%)
END SUB
SUB SetMouse (x%, y%)
r% = Interr%(&H33, 4, Bx%, x% * 8 - 8, y% * 8 - 8)
END SUB
SUB TestPrinterStatus
'Interruption DOS &H17, Fonction 2: TEST ETAT IMPRIMANTE
P% = Interr%(&H17, &H200, 0, 0, 0)
'Valeur hexa retournée (9000 = OnLine(10h) + Ready(80h)) = HEX$(P%)
'0 = OffLine
END SUB
SUB TextBoxEcrireLire
COLOR 7
LOCATE 11, 34: PRINT "Nouvelle page"
LOCATE 13, 34: PRINT "Page Modèle"
LOCATE 15, 34: PRINT "Consulter une page"
LOCATE 17, 34: PRINT "Quitter l'option"
COLOR 14
LOCATE 11, 34: PRINT "N"
LOCATE 13, 39: PRINT "M"
LOCATE 15, 34: PRINT "C"
LOCATE 17, 34: PRINT "Q"
FOR i = 172 TO 268 STEP 32: LINE (230, i)-(240, i - 10), 7, B: NEXT i
END SUB