
REM Schreibkurs V1.2 © Andresas Gunten 1989
REM Original erschienen auf der Kickstart PD-Disk #216 (V1.0)
REM Angepaßt an ACE-Basic von Ber 1996 (V1.1 , V1.2)
REM Development Enviroment: AIDE V2.02
REM Compiler: ACE V2.4
REM Assembler: A68K V2.71
REM Linker: BLink V6.7

Vorbereitungen:
   Version$ = "$VER: Schreibkurs_V1.2 © Andreas Gunten 1989, Ber 1996"
   SCREEN 1, 640, 256, 3, 2
   WINDOW 2, "Schreibkurs", (0,0)-(640,256), 0 ,1
   PALETTE 0,0 , .067, .467
   PALETTE 1, .934, .934, .934
   PALETTE 2, .534,1 , .734
   PALETTE 3, .667, .734, .8
   PALETTE 4,0 , .934,1
   PALETTE 5,1 , .534, .8
   PALETTE 6, .4 , .534, .867
   PALETTE 7, .867, .734,0
   DIM w$(35): DIM Einl$(20)

   MENU 1,0,1,"Auswahl"
   MENU 1,1,1,"Einführung"
   MENU 1,2,1,"Tastaturhilfe"
   MENU 1,3,1,"Beenden    ^C"
   MENU 2,0,1,"Schreibkurs"
   MENU 2,1,1,"1. Lektion"
   MENU 2,2,1,"2. Lektion"
   MENU 2,3,1,"3. Lektion"
   MENU 2,4,1,"4. Lektion"
   MENU 2,5,1,"5. Lektion"
   MENU 2,6,1,"6. Lektion"
   MENU 2,7,1,"7. Lektion"
   MENU 2,8,1,"8. Lektion"
   MENU 3,0,1,"Texte"
   MENU 3,1,1,"Text 1 " :REM <-- Menü breiter!
   MENU 3,2,1,"Text 2"
   MENU 3,3,1,"Text 3"
   MENU 3,4,1,"Text 4"
   MENU 3,5,1,"Text 5"
   MENU 3,6,1,"Text 6"
   MENU 3,7,1,"Text 7"
   MENU 3,8,1,"Text 8"

   GOSUB Start

   ON MENU GOSUB Menukontrolle: MENU ON
   ON BREAK GOTO Abbruch: BREAK ON

Warten: REM In dieser Schleife verbringt das Programm 99,9% der Laufzeit!
   MENU ON
   SLEEP :REM CPU entlasten
GOTO Warten

WarteAufTastenDruck:
   BREAK STOP: MENU STOP
   REPEAT
      SLEEP
      b$ = INKEY$
   UNTIL b$ <> ""
RETURN

Start:
   BREAK STOP: MENU STOP
   CLS
   LOCATE 11,1: COLOR 3,0
   PRINTS"                  S C H R E I B K U R S  Zehnfinger-System"
   PRINTS
   PRINTS
   PRINTS"                         © Andreas von Gunten 1989,"
   PRINTS
   PRINTS
   PRINTS"                         überarbeitet von Ber 1996.";
   COLOR 4,0
   LINE (100,60)-(520,152),,b
RETURN

Menukontrolle:
   Men% = MENU (0): MenPunkt% = MENU (1)
   IF Men% = 1% THEN
      CASE
         MenPunkt% =1%: GOSUB Einfuehrung
         MenPunkt% =2%: GOSUB Tastaturhilfe
         MenPunkt% =3%: GOSUB Abbruch
      END CASE
   END IF
   BREAK STOP
   IF Men% = 2 THEN
      CASE
         MenPunkt% =1%: OPEN "I",#3,"Lekt1"
         MenPunkt% =2%: OPEN "I",#3,"Lekt2"
         MenPunkt% =3%: OPEN "I",#3,"Lekt3"
         MenPunkt% =4%: OPEN "I",#3,"Lekt4"
         MenPunkt% =5%: OPEN "I",#3,"Lekt5"
         MenPunkt% =6%: OPEN "I",#3,"Lekt6"
         MenPunkt% =7%: OPEN "I",#3,"Lekt7"
         MenPunkt% =8%: OPEN "I",#3,"Lekt8"
      END CASE
      GOSUB Kapitel
   END IF
   IF Men% = 3 THEN
      CASE
         MenPunkt% =1%: OPEN "I",#3,"Text1"
         MenPunkt% =2%: OPEN "I",#3,"Text2"
         MenPunkt% =3%: OPEN "I",#3,"Text3"
         MenPunkt% =4%: OPEN "I",#3,"Text4"
         MenPunkt% =5%: OPEN "I",#3,"Text5"
         MenPunkt% =6%: OPEN "I",#3,"Text6"
         MenPunkt% =7%: OPEN "I",#3,"Text7"
         MenPunkt% =8%: OPEN "I",#3,"Text8"
      END CASE
      GOSUB Texte
   END IF
   BREAK ON
RETURN

Einfuehrung:
   MENU STOP
   CLS
   COLOR 3,0
   OPEN "I",#2,"Text"
   WHILE NOT EOF (2)
      PRINT (INPUT$ (1, #2));
   WEND
   CLOSE 2
RETURN

Tastaturhilfe:
   BREAK STOP: MENU STOP
   WINDOW 3, "Tastaturhilfe", (26,70)-(612,235), 2, 1
   IF ERR THEN RETURN :REM Bei OS.2 öffnet sich das Window manchmal nicht!?!?
   LOCATE 2,7
   COLOR 2,0 : PRINTS "kleiner Finger";
   COLOR 3,0 : PRINTS "    Ringfinger";
   COLOR 4,0 : PRINTS "    Mittelfinger";
   COLOR 5,0 : PRINTS "    Zeigefinger";
   LOCATE 4,14
   COLOR 2,0: PRINTS "1   2";
   COLOR 3,0: PRINTS "   3";
   COLOR 4,0: PRINTS "   4";
   COLOR 5,0: PRINTS "   5   6   7   8";
   COLOR 4,0: PRINTS "   9";
   COLOR 3,0: PRINTS "   0";
   COLOR 2,0: PRINTS "   '";
   LOCATE 6,15
   PRINTS "q";
   COLOR 3,0: PRINTS "   w";
   COLOR 4,0: PRINTS "   e";
   COLOR 5,0: PRINTS "   r   t   z   u";
   COLOR 4,0: PRINTS "   i";
   COLOR 3,0: PRINTS "   o";
   COLOR 2,0: PRINTS "   p   ü";
   LOCATE 8,16
   PRINTS "a";
   COLOR 3,0: PRINTS "   s";
   COLOR 4,0: PRINTS "   d";
   COLOR 5,0: PRINTS "   f   g   h   j";
   COLOR 4,0: PRINTS "   k";
   COLOR 3,0: PRINTS "   l";
   COLOR 2,0: PRINTS "   ö   ä";
   LOCATE 10,17
   PRINTS "y";
   COLOR 3,0: PRINTS "   x";
   COLOR 4,0: PRINTS "   c";
   COLOR 5,0: PRINTS "   v   b   n   m";
   COLOR 4,0: PRINTS "   ,";
   COLOR 3,0: PRINTS "   .";
   COLOR 2,0: PRINTS "   -";
   LOCATE 14,1
   COLOR 6,0
   PRINTS "   Die Leertaste wird mit dem Daumen angeschlagen."
   COLOR 7,0
   PRINTS "   Die Uschalttaste wird mit dem freien kleinen Finger angeschlagen."
   COLOR 1,0
   PRINTS "   Die Eingabetaste wird mit dem kleinen Finger angeschlagen."
   PRINTS
   PRINTS "               Auf Tastendruck Rückkehr zur Arbeit.";
   FOR x% = 97% TO 417% STEP 32%
      LINE (x%,22)-((x%+20),32),,b
      LINE ((x%+8),39)-((x%+28),49),,b
      LINE ((x%+16),55)-((x%+36),65),,b
      LINE ((x%+23),70)-((x%+43),80),,b
   NEXT x%
   LINE (80,70)-(115,80), 7, bf: LINE (437,70)-(490,80), 7, bf
   LINE (140,85)-(400,95), 6, bf: LINE (460,39)-(490,65), , bf
   GOSUB WarteAufTastenDruck
   WINDOW CLOSE 3
RETURN

Kapitel:
   BREAK STOP: MENU STOP
   CLS
   FOR a% = 1% TO 34%
      Fehler% = 0%
      LINE INPUT #3, w$ (a%)
      COLOR 4,0: LOCATE 4,4
      PRINTS w$(a% );
      COLOR 3,0: LOCATE 6,4
      FOR t% = 1% TO 59%
         REPEAT
            SLEEP
            b$ = INKEY$
         UNTIL b$ <> ""
         IF b$ = MID$ (w$ (a%), t%, 1) THEN
            PRINTS b$;
         ELSE
            BEEP
            IF b$=CHR$(3) OR b$=CHR$(27) THEN EXIT FOR
            ++ Fehler%: -- t%
         END IF
      NEXT t%
      LOCATE 20,4: COLOR 5,0
      PRINTS Fehler%;" Fehler!"
      LOCATE 22,1: COLOR 3,0
      PRINTS "    't'            für Tastaturhilfe"
      PRINTS "    'e'            für Exit"
      PRINTS "    'Leertaste'    für Fortsetzung";
      Taste:
         sleep
         ex$ = INKEY$
         CASE
            ex$ = " ": b$ = "": GOTO Weiter
            ex$ = "t": GOSUB Tastaturhilfe
            ex$ = "e" OR ex$=CHR$(3) OR ex$=CHR$(27): EXIT FOR
         END CASE
      GOTO Taste
      Weiter:
      CLS
   NEXT a%
   CLOSE 3
   CLS
   IF a% > 34 AND b$<>CHR$(3) AND b$<>CHR$ (27) THEN
      LOCATE 15,20: PRINTS "Diese Lektion ist geschafft!";
      LOCATE 17,20: PRINTS "Weiter auf Tastendruck.";
      GOSUB WarteAufTastenDruck
   END IF
   GOSUB Start
RETURN

Texte:
   BREAK STOP: MENU STOP
   CLS: COLOR 4,0: PRINTS
   a% = 1%
   WHILE NOT EOF (3)
      LINE INPUT #3, Einl$(a%)
      PRINTS " "; Einl$(a%)
      Einl$(a%) = Einl$(a%) +CHR$ (13)
      ++ a%
   WEND
   COLOR 3,0
   LOCATE 16,2
   Anzahl% = 0%: Fehler% = 0%
   Startzeit$ = TIME$
   FOR b% = 1% TO (a% -1%)
      l% = LEN (Einl$(b%))
      FOR z% = 1% TO l%
      REPEAT
         SLEEP
         b$ = INKEY$
      UNTIL b$ <> ""
      ex$ = MID$ (Einl$(b%),z%,1)
      IF b$ = ex$ THEN
         IF b$ <> CHR$ (13) THEN PRINTS b$;
         ++ Anzahl%
      ELSE
         BEEP
         IF b$=CHR$(3) OR b$=CHR$(27) THEN EXIT FOR
         -- z%: ++ Fehler%
      END IF
      NEXT z%
      IF b$=CHR$(3) OR b$=CHR$(27) THEN EXIT FOR
      LOCATE (16+b%), 2
   NEXT b%
   Endzeit$ = TIME$
   CLS
   CLOSE 3
   GOSUB Auswertung
   GOSUB Start
RETURN

Auswertung:
   BREAK STOP: MENU STOP
   m1% = 60% *VAL (MID$ (Startzeit$, 4, 2))
   s1% = VAL (MID$ (Startzeit$, 7, 2))
   m2% = 60% *VAL (MID$ (Endzeit$, 4, 2))
   s2% = VAL (MID$ (Endzeit$, 7, 2))
   IF m2% < m1% THEN m2% = m2% +3600%
   ti% = (m2% +s2%) -(m1% +s1%)
   m% = FIX (ti% /60%)
   s% = ti% -(m% *60%)
   IF ti% THEN geschw% = FIX (Anzahl% *60% /ti%) ELSE geschw% = 0%
   LOCATE 13,10
   PRINTS "A u s w e r t u n g";
   LOCATE 14,10
   PRINTS "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
   LOCATE 16,10
   PRINTS "Das waren "; Anzahl%; " Anschläge";
   LOCATE 18,10
   PRINTS "in ";m%; " Minuten und "; s%; " Sekunden,";
   LOCATE 20,10
   PRINTS "entsprechend ";  :COLOR 5,0:
   PRINTS geschw%; " Anschläge pro Minute"; :COLOR 3,0
   LOCATE 22,10
   PRINTS "mit "; :COLOR 5,0
   PRINTS Fehler%; " Fehlern."; :COLOR 3,0
   LOCATE 25, 10
   PRINTS "Weiter auf Tastendruck.";
   GOSUB WarteAufTastenDruck
RETURN

Abbruch:
   WINDOW CLOSE 2
   SCREEN CLOSE 1
STOP
