   10 PROGRAM "TINY.BAS"
  100 SET INTERRUPTSTOPOFF
  105 CLEAR SCREEN
  110 TEXT 40
  115 FOR F=1TO16
  120   SET FKEYF" "
  125 NEXT 
  130 PRINT AT10,1:"TINY TOUCH'N' GO";CHR$(241)
  135 PRINT AT13,1:"    a Studio";CHR$(241)
  140 PRINT AT15,1:"   FISO+NEWSY";CHR$(241)
  145 CALL INIT1
  150 CLEAR SCREEN
  155 PRINT AT10,1:"     Ha nincs távvezérlő bemenet a         magnóján, akkor most állítsa le!"
  160 PRINT AT15,8:"NYOMJA LE AZ ENTER GOMBOT!"
  165 DO 
  170   GET Y$
  175 LOOP UNTILY$=CHR$(13)
  180 CLEAR SCREEN
  185 PRINT AT10,4:"Angol vagy német gépe van (a/n)?";
  190 DO 
  195   GET ANG$
  200   LET ANG$=UCASE$(ANG$)
  205 LOOP UNTILANG$="A"ORANG$="N"
  210 PRINT ANG$
  215 IF ANG$="N"THEN
  220   EXT "uk"
  225   CALL INIT1
  230 END IF 
  235 LET FALSE=0:LET TRUE=-1
  240 LET CHAN,YES,NO=0
  245 LET REMOTE=0
  250 CLEAR SCREEN
  255 PRINT AT17,1:"  A TINY TOUCH'N'GO tudja kezelni a      magnó távvezérlőt. Kíván élni ezzel";CHR$(13);TAB(9);"a lehetőséggel (i/n) ? ";
  260 LET REMOTE=1
  265 DO 
  270   CALL YESNO
  275   IF YESTHENLET REMOTE=-1
  280   IF NOTHENLET REMOTE=0
  285 LOOP UNTILREMOTE<>1
  290 PRINT Y$
  295 CLEAR SCREEN
  300 PRINT AT21,9:"Egy kis türelmet kérek !"
  305 LET C_LESSON=0
  310 DIM ROW(1TO4)
  315 STRING KEY$(1TO4)*13
  320 CALL KEYBOARD_DRAW
  325 STRING A$(1TO10)*42
  330 STRING B$(1TO10)*42
  335 STRING DATA$(1TO170)*41
  340 STRING TEMP$*41
  345 STRING TEMP1$*41,TEMP2$*41
  350 STRING KEY_FLASH$*90
  355 STRING SPLIT$*71
  360 STRING LINE$*40,QUESTION$*40
  365 STRING C$*41,DEL$*3,OPTION$*1
  370 STRING Q1$*41,Q2$*41
  375 STRING TEMP_T$*8
  380 STRING FIN$*200
  385 !
  390 !
  395 !   initialize variables
  400 !
  405 !
  410 LET CHAN=2:LET CHAN3=3
  415 LET CR,Y,NUM,C_LESSON=0
  420 LET PERFECT,N_LESSON,P_LESSON=0
  425 LET R_ACC,ACC,WPM,RWPM,L_PTR,PTR=0
  430 LET P_BLOCK,P1,Q1=0
  435 !
  440 LET FALSE=0:LET TRUE=-1
  445 LET LONG,FOUND=FALSE
  450 LET EXERCISE_NEXT=FALSE
  455 LET LESSON_NEXT=FALSE
  460 LET FIRST=TRUE
  465 LET Y$=""
  470 LET CONST=6
  475 !
  480 LET QUESTION$="????????????????????????????????????????"
  485 LET SPLIT$=";9;11;15;19;22;24;28;33"
  490 LET SPLIT$=SPLIT$&";37;40;41;46;50;51;53;55;57;58;69;70;73;74;75;76"
  495 LET LINE$="----------------------------------------"
  500 LET KEY_FLASH$="jfkdlsÉa/i/mr,/vío/Ág/e/upt/nchű"
  505 LET KEY_FLASH$=KEY_FLASH$&"/őúy/bü//qxwz/ö./*+//ó/-//123456"
  510 LET KEY_FLASH$=KEY_FLASH$&"789o//?;////"
  515 LET DEL$=CHR$(8)&" "&CHR$(8)
  520 LET CUR_ON$=CHR$(27)&CHR$(79)
  525 LET CUR_OFF$=CHR$(27)&CHR$(111)
  530 LET LFCR$=CHR$(10)&CHR$(13)
  535 !
  540 !
  545 WHEN EXCEPTIONUSEERROR
  550   !
  555   !
  560   !
  565   CALL SET_SCREEN_1
  570   CALL SET_SCREEN_2
  575   SET BORDERBLACK
  580   CLEAR SCREEN
  585   SET STATUSOFF
  590   CALL COLOUR_SET_1
  595   CALL COLOUR_SET_3
  600   SET #CHAN:INK3
  605   PRINT #CHAN:CUR_OFF$
  610   !
  615   !
  620   CALL INSTRUCTIONS
  625   CALL LESSON_DETAILS
  630   !
  635   !
  640   ! start of main program
  645   !
  650   ! get lesson number required
  655   !
  660   LET VALID=TRUE
  665   DO 
  670     DO 
  675       CLEAR #CHAN
  680       CALL BANNER
  685       IF C_LESSON>0THEN
  690         PRINT #CHAN,AT6,10:"Kéri a főmenüt (i/n)?";
  695         CALL YESNO
  700         IF YESTHEN
  705           CALL INSTRUCTIONS
  710           CALL LESSON_DETAILS
  715           CLEAR #CHAN
  720           CALL BANNER
  725         END IF 
  730         PRINT #CHAN,AT6,1:"                                      "
  735         PRINT #CHAN,AT6,1:"Az előző lecke száma: ";P_LESSON;"          "
  740       END IF 
  745       PRINT #CHAN:CUR_ON$;
  750       CALL GET_LESSON
  755       PRINT #CHAN:CUR_OFF$;
  760       IF C_LESSON<1ORC_LESSON>76THEN
  765         PRINT #CHAN,AT14,12:"Nincs ilyen lecke!";
  770         LET VALID=FALSE
  775         WAIT DELAY4
  780       ELSE 
  785         LET VALID=TRUE
  790       END IF 
  795     LOOP UNTILVALID
  800     !
  805     !  load lesson data block
  810     !
  815     SELECT CASEC_LESSON
  820     CASE 1TO9
  825       LET BLOCK=1
  830     CASE 10TO17
  835       LET BLOCK=2
  840     CASE 18TO26
  845       LET BLOCK=3
  850     CASE 27TO35
  855       LET BLOCK=4
  860     CASE 36TO44
  865       LET BLOCK=5
  870     CASE 45TO53
  875       LET BLOCK=6
  880     CASE 54TO63
  885       LET BLOCK=7
  890     CASE 64TO72
  895       LET BLOCK=8
  900     CASE 73TO76
  905       LET BLOCK=9
  910     END SELECT 
  915     SET STATUSON
  920     !
  925     IF BLOCK<P_BLOCKTHEN
  930       CLEAR #CHAN
  935       PRINT #CHAN,AT3,5:"Kérem tekerje vissza a szalagot!"
  940       CALL PRESS_ENTER(8,0)
  945       PRINT #CHAN,AT3,5:"                                                            "
  950     END IF 
  955     IF BLOCK<>P_BLOCKTHEN
  960       LET FILE_ID$="blokk"&STR$(BLOCK)
  965       LET FILE_ID$=FILE_ID$
  970       IF NOT(REMOTE)THEN
  975         PRINT #CHAN,AT14,11:"Indítsa el a magnót!"
  980       ELSE 
  985         PRINT #CHAN,AT14,12:"Egy kis türelmet !";
  990       END IF 
  995       OPEN #106:FILE_ID$ACCESSINPUT
 1000       LET P_BLOCK=BLOCK
 1005       LET EL=0
 1010       DO 
 1015         LET EL=EL+1
 1020         LINE INPUT#106:DATA$(EL)
 1025       LOOP UNTILDATA$(EL)="EOB"
 1030       CLOSE #106
 1035       SET STATUSOFF
 1040       PRINT #CHAN,AT14,10:"                                     "
 1045       IF NOT(REMOTE)THEN
 1050         PRINT #CHAN,AT16,10:"Állítsa meg a magnót !"
 1055         CALL PRESS_ENTER(18,0)
 1060       END IF 
 1065     END IF 
 1070     !
 1075     !  find lesson in data
 1080     !  and set pointer
 1085     !
 1090     LET PTR=0
 1095     LET FOUND=FALSE
 1100     DO 
 1105       LET PTR=PTR+1
 1110       IF DATA$(PTR)(1)="£"THEN
 1115         LET TEMP$=DATA$(PTR)(2:3)
 1120         IF C_LESSON=VAL(TEMP$)THEN
 1125           LET FOUND=TRUE
 1130         END IF 
 1135       END IF 
 1140     LOOP UNTILFOUND
 1145     !
 1150     ! Display lesson instructions
 1155     !
 1160     CALL LESSON_INSTRUCTIONS
 1165     !
 1170     ! control lesson
 1175     !
 1180     DO 
 1185       LET PERFECT=TRUE
 1190       LET IA=0
 1195       !
 1200       ! get exercise
 1205       !
 1210       DO 
 1215         LET PTR=PTR+1
 1220         LET IA=IA+1
 1225         LET TEMP$=DATA$(PTR)(LEN(DATA$(PTR)))
 1230         IF TEMP$="£"THEN
 1235           LET A$(IA)=DATA$(PTR)(1:LEN(DATA$(PTR))-1)
 1240         ELSE 
 1245           LET A$(IA)=DATA$(PTR)
 1250         END IF 
 1255       LOOP UNTILTEMP$<>"£"
 1260       IF A$(1)<>"$"THEN
 1265         !
 1270         ! do exercise
 1275         !
 1280         CALL LESSON
 1285         LET N_LESSON=C_LESSON
 1290       END IF 
 1295       IF OPTION$="B"THEN
 1300         CALL BANNER
 1305         PRINT #CHAN,AT6,1:"Biztosan be akarja fejezni (i/n)? ";
 1310         CALL YESNO
 1315         IF NOTHENLET OPTION$=""
 1320       END IF 
 1325     LOOP UNTILOPTION$="B"ORA$(1)="$"
 1330     !
 1335     ! end of lesson or quit
 1340     !
 1345     IF A$(1)<>"$"THENLET C_LESSON=76
 1350     LET P_LESSON=C_LESSON
 1355     LET P_BLOCK=BLOCK
 1360   LOOP UNTILC_LESSON=76
 1365   CLEAR #CHAN
 1370   !
 1375   !   print end of program messages
 1380   !   1. congratulations
 1385   !   2. go on to lesson+1
 1390   !   3. repeat lesson
 1395   !
 1400   IF NOT(PERFECT)THEN
 1405     LET FIN$="  A következő alkalommal a(z) "
 1410     LET FIN$=FIN$&STR$(N_LESSON)&" számú"&LFCR$
 1415     LET FIN$=FIN$&"     leckével folytassa a tanulást!"
 1420   ELSE IF N_LESSON<76THEN
 1425     LET FIN$="  A következő alkalommal a(z) "
 1430     LET FIN$=FIN$&STR$(N_LESSON+1)&" számú"&LFCR$
 1435     LET FIN$=FIN$&"     leckével folytassa a tanulást!"
 1440   ELSE 
 1445     LET FIN$="GRATULÁLUNK!  ön eredményesen végzett a"&LFCR$
 1450     LET FIN$=FIN$&" TINY TOUCH'N'GO  tanfolyamán. Mostmár"&LFCR$
 1455     LET FIN$=FIN$&"gyorsan és a megadott hibakereten belül"&LFCR$
 1460     LET FIN$=FIN$&"maradva tud gépelni."
 1465   END IF 
 1470   !
 1475   !   display end message
 1480   !
 1485   CLEAR #CHAN
 1490   CALL BANNER
 1495   PRINT #CHAN,AT3,15:"PROGRAM VÉGE"
 1500   PRINT #CHAN,AT5,1:FIN$;
 1505   PRINT #CHAN,AT12,13:"VISZONTLÁTÁSRA !"
 1510   !
 1515   !
 1520   !   end of main program code
 1525   !                   
 1530   !
 1535 END WHEN 
 1536 WAIT 6
 1537 IF ANG$="N"THENEXT "brd"
 1538 SET 8,0:CLEAR FKEYS
 1539 TEXT 
 1540 END 
 1545 DEF LESSON
 1550   DO 
 1555     DISPLAY #CHAN:AT1FROM1TO25
 1560     CLEAR #CHAN
 1565     CALL COLOUR_SET_2
 1570     SET BORDERBLACK
 1575     PRINT #CHAN:CUR_OFF$;
 1580     !
 1585     CALL SPEED_ACCURACY
 1590     PRINT #CHAN,AT13,1:LINE$;
 1595     PRINT #CHAN,AT14,1:"Ebben a gyakorlatban a követelmény :"
 1600     PRINT #CHAN:" ";STR$(R_ACC);"% pontosság és ";5*RWPM;"L/P"
 1605     PRINT #CHAN,AT1,6:"Most gépelje be a következőt :"
 1610     !
 1615     !
 1620     PRINT #CHAN:
 1625     !
 1630     FOR I=1TOIA
 1635       PRINT #CHAN:A$(I)
 1640     NEXT 
 1645     PRINT #CHAN,AT6,1:LINE$;
 1650     !
 1655     LET CHAR_TOT=0
 1660     LET LONG=FALSE
 1665     SET #CHAN3:CURSORCHARACTER142
 1670     SET #CHAN3:CURSORCOLOR1
 1675     SET #CHAN3:INK3
 1680     CLEAR #CHAN3
 1685     DISPLAY #CHAN3:AT7FROM1TO6
 1690     PRINT #CHAN3:CUR_ON$;
 1695     PRINT #CHAN3:" "
 1700     CALL KEYBOARD
 1705     FOR I=1TOIA
 1710       CALL FIRST_CHAR
 1715       IF I=1THENTIME "00:00:00"
 1720       CALL REMAINING_CHAR
 1725       LET B$(I)=C$
 1730       PRINT #CHAN3::PRINT #CHAN3:
 1735       LET L=LEN(B$(I))
 1740       LET CHAR_TOT=CHAR_TOT+L
 1745     NEXT 
 1750     PRINT #CHAN3:CUR_OFF$;
 1755     SET #CHAN3:CURSORCHARACTER32
 1760     DISPLAY #CHAN:AT16FROM16TO25
 1765     !
 1770     ! calculate time taken
 1775     ! and number of errors
 1780     !
 1785     LET MIN$=TEMP_T$(4:5)
 1790     LET SEC$=TEMP_T$(7:8)
 1795     IF VAL(SEC$)=0THENLET SEC$="01"
 1800     LET T=VAL(MIN$)*60+VAL(SEC$)
 1805     LET WPM=2*INT((CHAR_TOT+IA)/T*CONST+.5)
 1810     LET M=0
 1815     SET #CHAN3:INK1
 1820     FOR I=1TOIA
 1825       !     LET B$(I)=RTRIM$(B$(I))
 1830       LET S=(I-1)*80
 1835       LET L=LEN(B$(I))
 1840       LET NENT=FALSE
 1845       FOR J=1TOL
 1850         IF A$(I)(J:J)<>B$(I)(J:J)THEN
 1855           LET XP=MOD(S,40)+1:LET YP=INT(S/40)+1
 1860           PRINT #CHAN3,ATYP,XP:"!";
 1865           LET M=M+1
 1870         END IF 
 1875         LET S=S+1
 1880       NEXT 
 1885       !
 1890       ! line too short
 1895       !
 1900       IF L>LEN(A$(I))THEN
 1905         LET LONG=TRUE
 1910         IF B$(I)(LEN(B$(I)))=" "THENLET NENT=TRUE
 1915       ELSE IF L<LEN(A$(I))THEN
 1920         LET N=LEN(A$(I))-L
 1925         LET XP=MOD(S,40)+1:LET YP=INT(S/40)+1
 1930         PRINT #CHAN3,ATYP,XP:QUESTION$(XP:LEN(A$(I)))
 1935         LET M=M+N
 1940       END IF 
 1945     NEXT 
 1950     !
 1955     !   display assessment
 1960     !
 1965     PRINT #CHAN,AT17,2:5*WPM;"L/P-cel és";M;" hibával dolgozott.";
 1970     IF LONGTHEN
 1975       SET #CHAN:INK1
 1980       IF NENTTHEN
 1985         PRINT #CHAN,AT18,2:"(Nincs 'ENTER' a sor végén!)";
 1990         SET #CHAN:INK3
 1995       ELSE 
 2000         PRINT #CHAN,AT18,2:"(A sor túl hosszú!)";
 2005         SET #CHAN:INK3
 2010       END IF 
 2015     END IF 
 2020     LET ACC=(CHAR_TOT-M)/CHAR_TOT*100
 2025     PRINT #CHAN:
 2030     IF DATA$(PTR+1)<>"$"THEN
 2035       LET EXERCISE_NEXT=TRUE
 2040       LET LESSON_NEXT=FALSE
 2045     ELSE 
 2050       LET LESSON_NEXT=TRUE
 2055       LET EXERCISE_NEXT=FALSE
 2060     END IF 
 2065     LET PERFECT=TRUE
 2070     IF ACC<R_ACCORWPM<RWPMTHEN
 2075       PRINT #CHAN:" Vélemény: ISMÉTELJE meg a gyakorlatot!"
 2080       LET PERFECT=FALSE
 2085     ELSE IF LESSON_NEXTTHEN
 2090       PRINT #CHAN:" Vélemény: mehet a KöVETKEZő gyakorlatra!"
 2095     ELSE IF EXERCISE_NEXTTHEN
 2100       PRINT #CHAN:" Vélemény: mehet a KöVETKEZő gyakorlatra!"
 2105     END IF 
 2110     !
 2115     !   display menu
 2120     !
 2125     LET VALID=FALSE
 2130     DO 
 2135       PRINT #CHAN,AT21,1:"Nyomja le:"
 2140       IF PERFECTTHEN
 2145         PRINT #CHAN:" ENTER ___ a következő ";
 2150         IF LESSON_NEXTTHEN
 2155           PRINT #CHAN:"lecke"
 2160         ELSE 
 2165           PRINT #CHAN:"gyakorlat"
 2170         END IF 
 2175       END IF 
 2180       PRINT #CHAN:"     I ___ a gyakorlat megismétlése"
 2185       PRINT #CHAN:"     B ___ a program befejezése"
 2190       PRINT #CHAN:"     L ___ leckeismertető";
 2195       !
 2200       !   process selection
 2205       !
 2210       DO 
 2215         GET C$
 2220         DO 
 2225           GET OPTION$
 2230         LOOP UNTILOPTION$<>""
 2235         LET OPTION$=UCASE$(OPTION$)
 2240         IF OPTION$="I"THENLET VALID=TRUE
 2245         IF OPTION$="L"THENLET VALID=TRUE
 2250         IF OPTION$="B"THENLET VALID=TRUE
 2255         IF PERFECTANDORD(OPTION$)=13THENLET VALID=TRUE
 2260       LOOP UNTILVALID
 2265       IF OPTION$="L"THEN
 2270         CLEAR #CHAN
 2275         CALL COLOUR_SET_1
 2280         SET #CHAN:INK3
 2285         DISPLAY #CHAN:AT1FROM1TO25
 2290         LET TEMP_PTR=PTR
 2295         LET PTR=L_PTR
 2300         CALL LESSON_INSTRUCTIONS
 2305         LET PTR=TEMP_PTR
 2310         DISPLAY #CHAN:AT1FROM1TO25
 2315         CALL COLOUR_SET_2
 2320         CLEAR #CHAN
 2325       END IF 
 2330     LOOP UNTILOPTION$<>"L"
 2335   LOOP UNTILOPTION$<>"I"
 2340   CLEAR #CHAN
 2345   CALL COLOUR_SET_1
 2350   DISPLAY #CHAN:AT1FROM1TO25
 2355 END DEF 
 2360 !
 2365 !   determines required
 2370 !   speed and accuracy
 2375 !
 2380 DEF SPEED_ACCURACY
 2385   LET P1$=";"&STR$(C_LESSON)&";"
 2390   LET P1=POS(SPLIT$,P1$)
 2395   LET Q1=POS(A$(1)," ")
 2400   LET Q1$=A$(1)(1:Q1)
 2405   LET Q2$=A$(1)(Q1+1:POS(A$(1)," ",Q1+1)-Q1)
 2410   LET Q1=1
 2415   IF Q1$=Q2$THENLET Q1=Q1+1
 2420   LET R_ACC=100
 2425   LET RWPM=30
 2430   IF C_LESSON>22THENLET RWPM=RWPM+5
 2435   IF C_LESSON>47THENLET RWPM=RWPM+5
 2440   IF C_LESSON>62THENLET RWPM=RWPM+5
 2445   IF P1<>0THEN
 2450     IF Q1<>1THENLET RWPM=RWPM+5
 2455     IF C_LESSON=53ORC_LESSON=58THENLET RWPM=RWPM-5
 2460   ELSE 
 2465     LET R_ACC=95
 2470     LET RWPM=RWPM-5
 2475     IF Q1<>1ANDC_LESSON>10THENLET RWPM=RWPM+5
 2480   END IF 
 2485 END DEF 
 2490 !
 2495 !
 2500 !
 2505 HANDLER ERROR
 2510   !IF EXTYPE>999 THEN
 2515   PRINT AT1,1:"extype = ";EXTYPE
 2520   PRINT AT2,1:"exline = ";EXLINE
 2525   PRINT AT3,1:"exstring = ";EXSTRING$(EXTYPE)
 2530   EXIT HANDLER
 2535   !ELSE 
 2540   !
 2545   !  write this routine later
 2550   !
 2555   EXIT HANDLER
 2560   !END IF 
 2565 END HANDLER 
 2570 !
 2575 !
 2580 !
 2585 !
 2590 DEF PRESS_ENTER(Y_POS,FLAG)
 2595   GET C$
 2600   CALL HIGHLIGHT("  A folytatáshoz nyomja le az ENTER-t! ;",Y_POS)
 2605   DO 
 2610     GET C$
 2615   LOOP UNTILC$=CHR$(13)ORFLAG
 2620 END DEF 
 2625 !
 2630 !
 2635 DEF BANNER
 2640   CLEAR #CHAN
 2645   IF FIRSTTHEN
 2650     LET TEMP$="  - - - üDVöZLI A TINY TOUCH'N'GO - - - "
 2655   ELSE 
 2660     LET TEMP$="      - - - TINY TOUCH'N'GO - - -        "
 2665   END IF 
 2670   CALL HIGHLIGHT(TEMP$,1)
 2675 END DEF 
 2680 !
 2685 !
 2690 DEF COLOUR_SET_1
 2695   SET #CHAN:COLOUR0,BLUE
 2700   SET #CHAN:COLOUR1,YELLOW
 2705   SET #CHAN:COLOUR2,BLACK
 2710   SET #CHAN:COLOUR3,GREEN
 2715   SET BORDERBLACK
 2720 END DEF 
 2725 !
 2730 DEF COLOUR_SET_2
 2735   SET #CHAN:COLOUR0,BLUE
 2740   SET #CHAN:COLOUR1,CYAN
 2745   SET #CHAN:COLOUR2,GREEN
 2750   SET #CHAN:COLOUR3,BLACK
 2755 END DEF 
 2760 !
 2765 !
 2770 DEF COLOUR_SET_3
 2775   SET #CHAN3:COLOUR0,BLACK
 2780   SET #CHAN3:COLOUR1,YELLOW
 2785   SET #CHAN3:COLOUR2,BLACK
 2790   SET #CHAN3:COLOUR3,GREEN
 2795 END DEF 
 2800 !
 2805 DEF SET_SCREEN_1
 2810   SET VIDEOMODE0
 2815   SET VIDEOCOLOUR0
 2820   SET VIDEOX41
 2825   SET VIDEOY25
 2830   OPEN #2:"video:"
 2835 END DEF 
 2840 !
 2845 !
 2850 DEF SET_SCREEN_2
 2855   SET VIDEOMODE0
 2860   SET VIDEOCOLOUR0
 2865   SET VIDEOX41
 2870   SET VIDEOY8
 2875   OPEN #3:"video:"
 2880 END DEF 
 2885 !
 2890 !
 2895 DEF YESNO
 2900   LET VALID,NO,YES=FALSE
 2905   DO 
 2910     GET C$
 2915     LET C$=UCASE$(C$)
 2920     IF C$="I"THEN
 2925       PRINT #CHAN:C$;
 2930       LET VALID=TRUE
 2935       LET YES=TRUE
 2940     ELSE IF C$="N"THEN
 2945       PRINT #CHAN:C$;
 2950       LET VALID=TRUE
 2955       LET NO=TRUE
 2960     ELSE 
 2965       LET VALID=FALSE
 2970     END IF 
 2975   LOOP UNTILVALID
 2980 END DEF 
 2985 !
 2990 !
 2995 DEF DETAILS_BANNER
 3000   CLEAR #CHAN
 3005   PRINT #CHAN:" ";
 3010   CALL HIGHLIGHT("   - - -  LECKE TARTALOMJEGYZÉK  - - -   ",1)
 3015 END DEF 
 3020 !
 3025 ! the following routines are used
 3030 ! to get keyboard input for the
 3035 ! lessons by the main program.
 3040 !
 3045 DEF FIRST_CHAR
 3050   !
 3055   GET C$
 3060   CALL INPUT_CHAR
 3065   LET C$=""
 3070   LET C$=C$&Y$
 3075   PRINT #CHAN3:Y$;
 3080   LET TEMP_T$=TIME$
 3085 END DEF 
 3090 !
 3095 !
 3100 DEF INPUT_CHAR
 3105   DO 
 3110     DO 
 3115       GET Y$
 3120     LOOP UNTILY$<>""
 3125     LET Y=ORD(Y$)
 3130   LOOP UNTILY>31ANDY<128ORY=13ORY=164
 3135   SELECT CASEY$
 3140   CASE "*"
 3145     LET Y$="Á"
 3150   CASE ":"
 3155     LET Y$="á"
 3160   CASE "+"
 3165     LET Y$="É"
 3170   CASE ";"
 3175     LET Y$="é"
 3180   CASE "|"
 3185     LET Y$="í"
 3190   CASE "\"
 3195     LET Y$="í"
 3200   CASE "~"
 3205     LET Y$="ó"
 3210   CASE "^"
 3215     LET Y$="ó"
 3220   CASE "_"
 3225     LET Y$="ö"
 3230   CASE "0"
 3235     LET Y$="ö"
 3240   CASE "`"
 3245     LET Y$="ő"
 3250   CASE "@"
 3255     LET Y$="ő"
 3260   CASE "="
 3265     LET Y$="ü"
 3270   CASE "-"
 3275     LET Y$="ü"
 3280   CASE "}"
 3285     LET Y$="ű"
 3290   CASE "]"
 3295     LET Y$="ű"
 3300   CASE "{"
 3305     LET Y$="ú"
 3310   CASE "["
 3315     LET Y$="ú"
 3320   CASE "<"
 3325     LET Y$="?"
 3330   CASE ">"
 3335     LET Y$=";"
 3340   CASE "/"
 3345     LET Y$="-"
 3350   CASE "?"
 3355     LET Y$="_"
 3360   CASE "y"
 3365     LET Y$="z"
 3370   CASE "z"
 3375     LET Y$="y"
 3380   CASE "Y"
 3385     LET Y$="Z"
 3390   CASE "Z"
 3395     LET Y$="Y"
 3400   CASE ELSE
 3405     LET Y$=Y$
 3410   END SELECT 
 3415 END DEF 
 3420 !
 3425 !
 3430 DEF GET_LESSON
 3435   LET CR=FALSE:LET TEMP$=""
 3440   PRINT #CHAN,AT8,1:"írja be a következő kiválasztott lecke"
 3445   PRINT #CHAN,AT10,1:"számát és üsse le az ENTER-t >>";
 3450   DO 
 3455     DO 
 3460       GET Y$
 3465     LOOP UNTILY$<>""
 3470     LET Y=ORD(Y$)
 3475     SELECT CASEY
 3480     CASE 13
 3485       IF TEMP$<>""THEN
 3490         LET CR=TRUE
 3495       ELSE 
 3500         LET Y$=""
 3505       END IF 
 3510     CASE 48TO57
 3515       LET TEMP$=TEMP$&Y$
 3520     CASE 164
 3525       IF TEMP$<>""THEN
 3530         LET TEMP$=TEMP$(1:LEN(TEMP$)-1)
 3535         LET Y$=DEL$
 3540       END IF 
 3545     CASE ELSE
 3550       LET Y$=""
 3555     END SELECT 
 3560     PRINT #CHAN:Y$;
 3565   LOOP UNTILCR
 3570   LET C_LESSON=VAL(TEMP$)
 3575   !
 3580 END DEF 
 3585 !
 3590 !
 3595 DEF REMAINING_CHAR
 3600   NUMERIC K
 3605   LET LE=LEN(A$(I))
 3610   FOR K=1TOLE
 3615     CALL INPUT_CHAR
 3620     IF Y$=CHR$(13)THEN
 3625       LET K=LE
 3630     ELSE IF Y$<>CHR$(164)THEN
 3635       LET C$=C$&Y$
 3640       IF K<LEORK=LEANDY$<>" "THENPRINT #CHAN3:Y$;
 3645     ELSE IF Y$=CHR$(164)ANDLEN(C$)>=1THEN
 3650       LET C$=C$(1:LEN(C$)-1)
 3655       LET K=K-2
 3660       PRINT #CHAN3:DEL$;
 3665     END IF 
 3670     IF LE-1=KTHENLET TEMP_T$=TIME$
 3675   NEXT K
 3680 END DEF 
 3685 DEF INSTRUCTIONS
 3690   !
 3695   !  Introduction and program
 3700   !  Instructions
 3705   !
 3710   SET BORDERBLACK
 3715   CALL BANNER
 3720   LET FIRST=FALSE
 3725   DISPLAY #CHAN:AT1FROM1TO25
 3730   PRINT #CHAN,AT4,1:"Ez a program  76  fokozatosan  nehezedő "
 3735   PRINT #CHAN:LFCR$;"gyakorlat segítségével megtanítja önt a"
 3740   PRINT #CHAN:LFCR$;"magyar írógépen történő tízujjas  vakí-"
 3745   PRINT #CHAN:LFCR$;"rásra.  A tanfolyam egy-egy betű leüté-"
 3750   PRINT #CHAN:LFCR$;"sével kezdődik és értelmes szavak, mon-"
 3755   PRINT #CHAN:LFCR$;"datok, bekezdések leírásával  fejeződik"
 3760   PRINT #CHAN:LFCR$;"be."
 3765   CALL PRESS_ENTER(24,0)
 3770   CALL BANNER
 3775   PRINT #CHAN,AT4,1:"A gyakorlatokban a feladatokat  pontosan"
 3780   PRINT #CHAN:LFCR$;"úgy kell begépelni, ahogy  azok a képer-"
 3785   PRINT #CHAN:LFCR$;"nyőn megjelennek. Hiba esetén az 'ERASE'"
 3790   PRINT #CHAN:LFCR$;"billentyűvel lehet javítani.  Minden sor"
 3795   PRINT #CHAN:LFCR$;"végén le kell ütni az 'ENTER'-t."
 3800   CALL PRESS_ENTER(14,1)
 3805   CALL KEYBOARD
 3810   CALL ERSENT
 3815   DISPLAY #CHAN:AT1FROM1TO25
 3820   !
 3825   CALL BANNER
 3830   PRINT #CHAN,AT3,1:"Az  'ENTER'  lenyomása után a Touch'N'Go"
 3835   PRINT #CHAN:LFCR$;"kiírja a végrehajtott  gyakorlat eredmé-"
 3840   PRINT #CHAN:LFCR$;"nyét. Megjelenik a hibák  száma és a gé-"
 3845   PRINT #CHAN:LFCR$;"pelési sebesség leütés/perc-ben (ezentúl"
 3850   PRINT #CHAN:LFCR$;"a jelölése: L/P).  Az elérendő  sebesség"
 3855   PRINT #CHAN:LFCR$;"125 és 250 L/P közt változik."
 3860   PRINT #CHAN:LFCR$;"A gyakorló leckék  feladatait hibátlanul"
 3865   PRINT #CHAN:LFCR$;"kell  begépelni, az  új  anyagokét pedig"
 3870   PRINT #CHAN:LFCR$;"maximum 5% hibával."
 3875   CALL PRESS_ENTER(25,0)
 3880   CALL BANNER
 3885   PRINT #CHAN,AT3,1:"Azt javasoljuk, hogy a következő gyakor-"
 3890   PRINT #CHAN:LFCR$;"latra csak a kitűzött követelmény eléré-"
 3895   PRINT #CHAN:LFCR$;"se után térjen át, egyébként addig ismé-"
 3900   PRINT #CHAN:LFCR$;"telje a feladatot amíg nem tökéletes."
 3905   PRINT #CHAN:LFCR$;"A tévesen begépelt  betű felett egy '!',"
 3910   PRINT #CHAN:LFCR$;"kihagyott felett  pedig '?' jelenik meg."
 3915   PRINT #CHAN:LFCR$;"Ha vissza akar térni egy előző  blokkban"
 3920   PRINT #CHAN:LFCR$;"található  leckére,  akkor  a  szalagot"
 3925   PRINT #CHAN:LFCR$;"vissza kell tekerni."
 3930   CALL PRESS_ENTER(25,0)
 3935   CALL BANNER
 3940   PRINT #CHAN,AT3,1:"A gyakorlatok  alatt  végig  legyenek az"
 3945   PRINT #CHAN:LFCR$;"ujjai az ALAP SORon - a billentyűzet kö-"
 3950   PRINT #CHAN:LFCR$;"zépső sora -  és a jobb  kéz hüvelykujja"
 3955   PRINT #CHAN:LFCR$;"pedig a szóközön. A balkezesek természe-"
 3960   PRINT #CHAN:LFCR$;"tesen a bal hüvelykujjukat használják."
 3965   CALL PRESS_ENTER(14,1)
 3970   CALL KEYBOARD
 3975   CALL HOME
 3980   DISPLAY #CHAN:AT1FROM1TO25
 3985 END DEF 
 3990 !
 3995 !
 4000 !
 4005 DEF LESSON_DETAILS
 4010   CALL BANNER
 4015   PRINT #CHAN,AT3,3:"A leckéket 1-től 76-ig számoztuk."
 4020   PRINT #CHAN:LFCR$;"Kér részletes ismertetőt (i/n)? ";
 4025   CALL YESNO
 4030   IF YESTHEN
 4035     CALL DETAILS_BANNER
 4040     CALL HIGHLIGHT(" 1.  BLOKK   ",3)
 4045     PRINT #CHAN:LFCR$;"1-8........J, F, K, D, L, S, É, A"
 4050     PRINT #CHAN:LFCR$;"9..........Alap sor gyakorlása"
 4055     CALL HIGHLIGHT(" 2.  BLOKK   ",9)
 4060     PRINT #CHAN:LFCR$;"10-11......I, I - gyakorlása"
 4065     PRINT #CHAN:LFCR$;"12-13......M, R"
 4070     PRINT #CHAN:LFCR$;"14.........Vessző (,)"
 4075     PRINT #CHAN:LFCR$;"15.........Gyakorlás"
 4080     PRINT #CHAN:LFCR$;"16-17......V, í"
 4085     CALL PRESS_ENTER(25,0)
 4090     CALL DETAILS_BANNER
 4095     CALL HIGHLIGHT(" 3.  BLOKK   ",3)
 4100     PRINT #CHAN:LFCR$;"18-19......O, Kifejezések"
 4105     PRINT #CHAN:LFCR$;"20-21......Á, G"
 4110     PRINT #CHAN:LFCR$;"22.........Gyakorlás"
 4115     PRINT #CHAN:LFCR$;"23-24......E, E - gyakorlás"
 4120     PRINT #CHAN:LFCR$;"25-26......U, P"
 4125     CALL HIGHLIGHT(" 4.  BLOKK   ",15)
 4130     PRINT #CHAN:LFCR$;"27-28......T, Kifejezések"
 4135     PRINT #CHAN:LFCR$;"29-33......N, C, H, ű, Kifejezések"
 4140     PRINT #CHAN:LFCR$;"34-35......ő, ú"
 4145     CALL PRESS_ENTER(25,0)
 4150     CALL DETAILS_BANNER
 4155     CALL HIGHLIGHT(" 5.  BLOKK   ",3)
 4160     PRINT #CHAN:LFCR$;"36-39......Y, Kifejezések, B, ü"
 4165     PRINT #CHAN:LFCR$;"40.........Kifejezések"
 4170     PRINT #CHAN:LFCR$;"41.........Kifejezések"
 4175     PRINT #CHAN:LFCR$;"42-44......Q, X, W"
 4180     CALL HIGHLIGHT(" 6.  BLOKK   ",15)
 4185     PRINT #CHAN:LFCR$;"45-47......Z, Z-folyt., ö"
 4190     PRINT #CHAN:LFCR$;"48-49......Pont (.), Váltóbillentyűk"
 4195     PRINT #CHAN:LFCR$;"50-51......Gyakorlás: bal és jobb váltó"
 4200     PRINT #CHAN:LFCR$;"52-53......Római számok, Mondatok"
 4205     CALL PRESS_ENTER(25,0)
 4210     CALL DETAILS_BANNER
 4215     CALL HIGHLIGHT(" 7.  BLOKK   ",3)
 4220     PRINT #CHAN:LFCR$;"54-56......ó, Mondatok, Kötőjel (-)"
 4225     PRINT #CHAN:LFCR$;"57-58......Mondatok, Bekezdések"
 4230     PRINT #CHAN:LFCR$;"59-63......1, 2, 3, 4, 5"
 4235     CALL HIGHLIGHT(" 8.  BLOKK   ",15)
 4240     PRINT #CHAN:LFCR$;"64-68......6, 7, 8, 9, 0"
 4245     PRINT #CHAN:LFCR$;"69-70......Számok, Bekezdések"
 4250     PRINT #CHAN:LFCR$;"71-72......Kérdőjel (?), Pontosvessző (;)"
 4255     CALL PRESS_ENTER(25,0)
 4260     CALL DETAILS_BANNER
 4265     CALL HIGHLIGHT(" 9.  BLOKK   ",3)
 4270     PRINT #CHAN:LFCR$;"73.........Mondatok"
 4275     PRINT #CHAN:LFCR$;"74.........Bekezdések"
 4280     PRINT #CHAN:LFCR$;"75.........Bekezdések"
 4285     PRINT #CHAN:LFCR$;"76.........Bekezdések"
 4290     CALL PRESS_ENTER(25,0)
 4295   END IF 
 4300 END DEF 
 4305 !
 4310 !
 4315 DEF LESSON_INSTRUCTIONS
 4320   LET L_PTR=PTR
 4325   PRINT #CHAN:CUR_OFF$;
 4330   CLEAR #CHAN
 4335   LET TEMP$=STR$(C_LESSON)&".  Lecke "
 4340   CALL HIGHLIGHT(TEMP$&" ",1)
 4345   LET PTR=PTR+1
 4350   LET TEMP$=DATA$(PTR)
 4355   IF LEN(TEMP$)<25THEN
 4360     LET TEMP$=TEMP$&" - Magyarázat "
 4365   END IF 
 4370   CALL HIGHLIGHT(TEMP$&" ",3)
 4375   PRINT #CHAN:
 4380   DO 
 4385     LET PTR=PTR+1
 4390     LET TEMP$=DATA$(PTR)
 4395     IF TEMP$<>"*"THENPRINT #CHAN:TEMP$
 4400   LOOP UNTILTEMP$="*"
 4405   !
 4410   ! display keyboard and
 4415   ! flash key required
 4420   !
 4425   LET TEMP1$=KEY_FLASH$(C_LESSON)
 4430   IF TEMP1$<>"/"THEN
 4435     CALL KEYBOARD
 4440     CALL PRESS_ENTER(14,TRUE)
 4445     CALL DOT(TEMP1$)
 4450   ELSE 
 4455     CALL PRESS_ENTER(24,FALSE)
 4460   END IF 
 4465 END DEF 
 4470 DEF HIGHLIGHT(TITLE$,YPOS)
 4475   NUMERIC L,XPOS
 4480   SET #CHAN:INK1
 4485   LET L=LEN(TITLE$)
 4490   LET TEMP$=TITLE$(L:L)
 4495   LET XPOS=INT(41-L)/2
 4500   IF TEMP$=" "THEN
 4505     PRINT #CHAN,ATYPOS,XPOS:TITLE$(1:L-1)
 4510   ELSE 
 4515     PRINT #CHAN,ATYPOS,XPOS:TITLE$(1:L-1);
 4520   END IF 
 4525   SET #CHAN:INK3
 4530 END DEF 
 4535 DEF KEYBOARD_DRAW
 4540   CALL INIT
 4545   SET VIDEOMODE1
 4550   SET VIDEOCOLOUR1
 4555   SET VIDEOX38
 4560   SET VIDEOY10
 4565   OPEN #1:"video:"
 4570   SET #1:PALETTE56,WHITE,199,194,1,2,3,4
 4575   CALL SHKEY
 4580   SET #1:INK1
 4585   CALL ROWS
 4590   CALL LETTKEY
 4595   SET #1:INK3
 4600   PLOT #1:65,150,PAINT
 4605   PLOT #1:125,150,PAINT
 4610   PLOT #1:65,295,PAINT
 4615   CALL JOYSTICK
 4620 END DEF 
 4625 DEF ROWS
 4630   PRINT #1,AT8,3:"SH í Y X C V B N M ";CHR$(141);" ";CHR$(143);" - SH A"
 4635   PRINT #1,AT6,3:"C L A S D F G H J K L É Á ű T"
 4640   PRINT #1,AT4,3:CHR$(139);CHR$(140);" Q W E R T Z U I O P ő ú  E"
 4645   PRINT #1,AT5,31:"N"
 4650   PRINT #1,AT2,3:"E 1 2 3 4 5 6 7 8 9 ö ü ó ER ";CHR$(137);CHR$(138);" I"
 4655   PRINT #1,AT10,16:"SZóKöZ"
 4660 END DEF 
 4665 DEF LONGKEYS(LENGTH,X,Y)
 4670   LET LENG=LENGTH-10
 4675   LET LENGTH=LENGTH-4
 4680   PLOT #1:X+10,Y;X+LENG,Y;X+LENGTH,Y+10;X+LENGTH,Y+40;X+LENG,Y+50;X+10,Y+50;X,Y+40;X,Y+10;X+10,Y
 4685 END DEF 
 4690 DEF KEY(X,Y)
 4695   PLOT #1:X+10,Y;X+40,Y;X+50,Y+10;X+50,Y+40;X+40,Y+50;X+10,Y+50;X,Y+40;X,Y+10;X+10,Y
 4700 END DEF 
 4705 DEF LETTKEY
 4710   FOR X=56TO900STEP64
 4715     CALL KEY(X,140)
 4720   NEXT X
 4725   FOR X=152TO800STEP64
 4730     CALL KEY(X,68)
 4735   NEXT X
 4740   FOR X=152TO900STEP64
 4745     CALL KEY(X,212)
 4750   NEXT X
 4755   FOR X=56TO840STEP64
 4760     CALL KEY(X,285)
 4765   NEXT X
 4770 END DEF 
 4775 DEF SHKEY
 4780   CALL LONGKEYS(500,304,0)
 4785   CALL LONGKEYS(80,56,68)
 4790   CALL LONGKEYS(80,56,213)
 4795   CALL LONGKEYS(80,856,68)
 4800   CALL LONGKEYS(80,888,285)
 4805   CALL LONGKEYS(80,980,285)
 4810   CALL KEY(1076,285)
 4815   CALL KEY(952,68)
 4820   PLOT #1:960,140;992,140;1002,150;1002,250;992,260;932,260;922,250;922,220;952,200;952,150;960,140
 4825   SET #1:INK3
 4830   PLOT #1:960,160,PAINT
 4835   PLOT #1:960,78,PAINT
 4840   PLOT #1:1090,295,PAINT
 4845   PLOT #1:990,295,PAINT
 4850   PLOT #1:895,295,PAINT
 4855   PLOT #1:864,78,PAINT
 4860   PLOT #1:65,223,PAINT
 4865   PLOT #1:65,78,PAINT
 4870 END DEF 
 4875 DEF JOYSTICK
 4880   SET #1:INK1
 4885   FOR N=20TO80STEP20
 4890     PLOT #1:1104,144,ELLIPSEN,N,
 4895   NEXT N
 4900   SET #1:INK3
 4905   IF C_LESSON=43THENPLOT #1:90,80,PAINT
 4910   PLOT #1:1104,144,PAINT
 4915 END DEF 
 4920 DEF FLASH(X,Y,FLAG)
 4925   LOOK #1,ATX,Y:V
 4930   SET #1:INK2
 4935   PLOT #1:X,Y,PAINT
 4940   IF C_LESSON=71ORC_LESSON=72THENPLOT #1:90,80,PAINT
 4945   CALL FLASH1(FLAG)
 4950   SET #1:INKV
 4955   SET #1:COLOUR2,56
 4960   PLOT #1:X,Y,PAINT
 4965 END DEF 
 4970 DEF FLASH1(FLAG)
 4975   DO 
 4980     SET #1:COLOUR2,RED
 4985     FOR N=0TO75*FLAG
 4990     NEXT N
 4995     IF INKEY$=CHR$(13)THENEXIT DO
 5000     SET #1:COLOUR2,CYAN
 5005     FOR N=0TO75*FLAG
 5010     NEXT N
 5015   LOOP WHILEINKEY$<>CHR$(13)ANDFLAG=1
 5020 END DEF 
 5025 DEF HOME
 5030   SET #1:INK2
 5035   FOR XT=224TO608STEP384
 5040     FOR X=XTTOXT+192STEP64
 5045       PLOT #1:X,150,PAINT
 5050     NEXT X
 5055   NEXT XT
 5060   CALL FLASH1(1)
 5065   SET #1:INK0
 5070   SET #1:COLOUR2,56
 5075   FOR XT=224TO608STEP384
 5080     FOR X=XTTOXT+192STEP64
 5085       PLOT #1:X,150,PAINT
 5090     NEXT X
 5095   NEXT XT
 5100 END DEF 
 5105 DEF INIT1
 5110   NUMERIC N(1TO10),I,R
 5115   RESTORE  5150
 5120   FOR I=1TO25
 5125     FOR R=1TO10
 5130       READ N(R)
 5135     NEXT R
 5140     SET CHARACTER(N(1)),N(2),N(3),N(4),N(5),N(6),N(7),N(8),N(9),N(10)
 5145   NEXT I
 5150   DATA 137,241,217,205,205,205,217,241,0,0,138,236,140,140,204,140,140,239,0,0
 5155   DATA 139,243,102,102,102,103,102,102,0,0,140,158,89,89,94,217,89,94,0,0
 5160   DATA 141,48,72,16,16,0,16,4,4,8
 5165   DATA 142,255,255,255,255,255,255,255,255,255
 5170   DATA 143,8,0,8,16,0,0,24,24,0
 5175   DATA 128,12,8,60,102,126,102,102,0,0
 5180   DATA 129,12,8,126,96,124,96,126,0,0
 5185   DATA 130,12,8,60,24,24,24,60,0,0
 5190   DATA 131,12,60,110,102,102,102,60,0,0
 5195   DATA 132,102,60,102,102,102,102,60,0,0
 5200   DATA 133,54,60,110,102,102,102,60,0,0
 5205   DATA 134,12,110,102,102,102,102,60,0,0
 5210   DATA 135,102,66,102,102,102,102,60,0,0
 5215   DATA 136,54,108,102,102,102,102,60,0,0
 5220   DATA 144,12,8,60,6,62,102,62,0,0
 5225   DATA 145,12,8,60,102,126,96,60,0,0
 5230   DATA 146,12,8,56,24,24,24,60,0,0
 5235   DATA 147,12,8,60,102,102,102,60,0,0
 5240   DATA 148,102,0,60,102,102,102,60,0,0
 5245   DATA 149,54,36,60,102,102,102,60,0,0
 5250   DATA 150,12,8,0,102,102,102,63,0,0
 5255   DATA 151,102,0,102,102,102,102,63,0,0
 5260   DATA 152,54,36,102,102,102,102,63,0,0
 5265 END DEF 
 5270 DEF INIT
 5275   LET KEY$(1)="íYXCVBNM,.-?;"
 5280   LET KEY$(2)="ASDFGHJKLÉÁű"
 5285   LET KEY$(3)="QWERTZUIOPőú"
 5290   LET KEY$(4)="123456789öüó"
 5295   LET ROW(1)=257-64
 5300   LET ROW(2)=220
 5305   LET ROW(3)=195
 5310   LET ROW(4)=257-64*2
 5315   SET CURSORCHARACTER142
 5320 END DEF 
 5325 DEF DOT(LET$)
 5330   NUMERIC CDE,N,X,Y
 5335   IF ORD(LET$)<128ANDORD(LET$)>63THEN
 5340     LET LET$=UCASE$(LET$)
 5345   END IF 
 5350   LET CDE=ORD(LET$)
 5355   SELECT CASECDE
 5360   CASE ORD("?")
 5365     LET Y=80
 5370     LET X=705
 5375   CASE ORD(";")
 5380     LET Y=80
 5385     LET X=769
 5390   CASE ORD("*")
 5395     LET Y=80
 5400     LET X=90
 5405   CASE ORD("+")
 5410     LET Y=80
 5415     LET X=890
 5420   CASE 13
 5425     LET X=960
 5430     LET Y=160
 5435   CASE 32
 5440     LET X=315
 5445     LET Y=15
 5450   CASE 44TO46,49TO57,58,59,63,65TO90,128TO136
 5455     FOR N=1TO4
 5460       LET POSITION=POS(KEY$(N),LET$)
 5465       IF POSITION<>0THENEXIT FOR
 5470     NEXT N
 5475     LET X=ROW(N)+((POSITION-1)*64)
 5480     LET Y=75*N+15
 5485   CASE ELSE
 5490     EXIT DEF
 5495   END SELECT 
 5500   CALL FLASH(X,Y,1)
 5505 END DEF 
 5510 DEF ERSENT
 5515   SET #1:INK2
 5520   PLOT #1:960,160,PAINT
 5525   PLOT #1:910,300,PAINT
 5530   CALL FLASH1(1)
 5535   SET #1:INK3
 5540   SET #1:COLOUR2,56
 5545   PLOT #1:960,160,PAINT
 5550   PLOT #1:910,300,PAINT
 5555 END DEF 
 5560 DEF KEYBOARD
 5565   DISPLAY #1:AT16FROM1TO10
 5570 END DEF 

