home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / spiele / kids / fouryrs / typewrit.lst < prev    next >
Encoding:
File List  |  1995-08-15  |  3.0 KB  |  163 lines

  1. ' typewrite
  2. ' Programmed by Seymour Shlien in GFA Basic 3.5
  3. ' 624 Courtenay Avenue
  4. ' Ottawa , Ontario
  5. ' Canada, K2A 3B5
  6. ' 18-Feb-93
  7. DIM row$(3)
  8. DIM txt$(8)
  9. DIM music_data&(15000)
  10. DIM index%(10)
  11. CLS
  12. DEFMOUSE 0
  13. rez%=XBIOS(4)
  14. IF rez%<>0
  15.   ALERT 3," Please switch   to | low  resolution! ",1,"Oops",b%
  16.   STOP
  17. ENDIF
  18. HIDEM
  19. row$(0)="QWERTYUIOP"
  20. row$(1)="ASDFGHJKL"
  21. row$(2)="ZXCVBNM,."
  22. txt$(0)="Baa baa black sheep"
  23. txt$(1)="Have you any wool"
  24. txt$(2)="Yes sir yes sir"
  25. txt$(3)="Three bags full"
  26. txt$(4)="One for the master and"
  27. txt$(5)="One for the dame and"
  28. txt$(6)="One for the little boy"
  29. txt$(7)="Who lives down the lane"
  30. ix%=10
  31. iy%=20
  32. istart%=0
  33. LOCATE 28,22
  34. PRINT "Esc to quit"
  35. @draw_typewriter
  36. BOX 3,2,200,100
  37. DEFTEXT 2
  38. TEXT 8,128,"Please turn up the volume"
  39. @read_music
  40. SPOKE &H484,BCLR(PEEK(&H484),0)
  41. HIDEM
  42. DELAY (0.5)
  43. FOR i%=0 TO 7
  44.   @dosound(i%)
  45.   '  DELAY 0.005
  46.   '  PAUSE 1
  47.   '  REPEAT
  48.   '  a%=XBIOS(28,0,7)
  49.   ' UNTIL a%=255
  50.   PAUSE 100
  51. NEXT i%
  52. TEXT 8,128,SPACE$(26)
  53. SPOKE &H484,BCLR(PEEK(&H484),0)
  54. FOR i%=0 TO 7
  55.   HIDEM
  56.   LOCATE 1,15
  57.   DELAY (1)
  58.   FOR j%=0 TO i%
  59.     '    PRINT j%;" ";
  60.     @dosound(j%)
  61.     PAUSE 100
  62.   NEXT j%
  63.   SPOKE &H484,BSET(PEEK(&H484),0)
  64.   IF istart%=0
  65.     LOCATE 2,16
  66.     PRINT "Please enter highlighted key"
  67.   ENDIF
  68.   @enter_tline(txt$(i%))
  69. NEXT i%
  70. LOCATE 28,22
  71. PRINT "Very good!  ";
  72. SPOKE &H484,BCLR(PEEK(&H484),0)
  73. FOR i%=0 TO 7
  74.   @dosound(i%)
  75.   PAUSE 100
  76. NEXT i%
  77. SPOKE &H484,BSET(PEEK(&H484),0)
  78. REPEAT
  79. UNTIL INKEY$<>""
  80. > PROCEDURE draw_typewriter
  81.   BOX 5,150,100,191
  82.   TEXT 10,160,row$(0)
  83.   TEXT 12,170,row$(1)
  84.   TEXT 14,180,row$(2)
  85.   BOX 16,185,86,189
  86. RETURN
  87. > PROCEDURE show_letter(char$)
  88.   LOCAL i%,j%
  89.   char$=UPPER$(char$)
  90.   i%=-1
  91.   DO
  92.     INC i%
  93.     j%=INSTR(row$(i%),char$)
  94.   LOOP UNTIL (i%>2) OR (j%>0)
  95.   IF j%<>0
  96.     TEXT 10+i%*2+(j%-1)*8,160+i%*10,char$
  97.   ENDIF
  98.   IF char$=" "
  99.     BOX 16,185,86,189
  100.   ENDIF
  101. RETURN
  102. > PROCEDURE enter_tline(txt$)
  103.   LOCAL i%,j%,k$,m$
  104.   FOR i%=1 TO LEN(txt$)
  105.     k$=MID$(txt$,i%,1)
  106.     DEFTEXT 2
  107.     COLOR 2
  108.     show_letter(k$)
  109.     DO
  110.       DO
  111.         m$=INKEY$
  112.       LOOP UNTIL m$<>""
  113.       IF ASC(m$)=27
  114.         END
  115.       ENDIF
  116.     LOOP UNTIL UPPER$(m$)=UPPER$(k$)
  117.     out_char(k$)
  118.     DEFTEXT 1
  119.     COLOR 1
  120.     show_letter(k$)
  121.   NEXT i%
  122.   PAUSE 10
  123.   iy%=iy%+10
  124.   ix%=10
  125. RETURN
  126. > PROCEDURE out_char(char$)
  127.   DEFTEXT 1
  128.   TEXT ix%,iy%,char$
  129.   ix%=ix%+8
  130.   IF ix%>310
  131.     iy%=iy%+10
  132.     ix%=10
  133.   ENDIF
  134. RETURN
  135. > PROCEDURE dosound(num%)
  136.   LOCAL i%
  137.   '  SPOKE &H484,PEEK(&H484) AND NOT 1
  138.   addr%=V:music_data&(index%(num%))
  139.   ~XBIOS(32,L:addr%)
  140. RETURN
  141. > PROCEDURE read_music
  142.   LOCAL i%,size%
  143.   IF EXIST("typewrit.mus")
  144.     OPEN "i",#1,"typewrit.mus"
  145.     BGET #1,VARPTR(index%(0)),40
  146.     size%=0
  147.     i%=1
  148.     REPEAT
  149.       size%=MAX(size%,index%(i%))
  150.       INC i%
  151.     UNTIL index%(i%)=0
  152.     size%=size%*2
  153.     BGET #1,VARPTR(music_data&(0)),size%
  154.     CLOSE #1
  155.     nsongs%=i%-1
  156.   ELSE
  157.     LOCATE 1,10
  158.     PRINT "TYPEWRIT.MUS file is missing"
  159.     PAUSE 100
  160.     END
  161.   ENDIF
  162. RETURN
  163.