home *** CD-ROM | disk | FTP | other *** search
File List | 1995-08-15 | 3.0 KB | 163 lines |
- ' typewrite
- ' Programmed by Seymour Shlien in GFA Basic 3.5
- ' 624 Courtenay Avenue
- ' Ottawa , Ontario
- ' Canada, K2A 3B5
- ' 18-Feb-93
- DIM row$(3)
- DIM txt$(8)
- DIM music_data&(15000)
- DIM index%(10)
- CLS
- DEFMOUSE 0
- rez%=XBIOS(4)
- IF rez%<>0
- ALERT 3," Please switch to | low resolution! ",1,"Oops",b%
- STOP
- ENDIF
- HIDEM
- row$(0)="QWERTYUIOP"
- row$(1)="ASDFGHJKL"
- row$(2)="ZXCVBNM,."
- txt$(0)="Baa baa black sheep"
- txt$(1)="Have you any wool"
- txt$(2)="Yes sir yes sir"
- txt$(3)="Three bags full"
- txt$(4)="One for the master and"
- txt$(5)="One for the dame and"
- txt$(6)="One for the little boy"
- txt$(7)="Who lives down the lane"
- ix%=10
- iy%=20
- istart%=0
- LOCATE 28,22
- PRINT "Esc to quit"
- @draw_typewriter
- BOX 3,2,200,100
- DEFTEXT 2
- TEXT 8,128,"Please turn up the volume"
- @read_music
- SPOKE &H484,BCLR(PEEK(&H484),0)
- HIDEM
- DELAY (0.5)
- FOR i%=0 TO 7
- @dosound(i%)
- ' DELAY 0.005
- ' PAUSE 1
- ' REPEAT
- ' a%=XBIOS(28,0,7)
- ' UNTIL a%=255
- PAUSE 100
- NEXT i%
- TEXT 8,128,SPACE$(26)
- SPOKE &H484,BCLR(PEEK(&H484),0)
- FOR i%=0 TO 7
- HIDEM
- LOCATE 1,15
- DELAY (1)
- FOR j%=0 TO i%
- ' PRINT j%;" ";
- @dosound(j%)
- PAUSE 100
- NEXT j%
- SPOKE &H484,BSET(PEEK(&H484),0)
- IF istart%=0
- LOCATE 2,16
- PRINT "Please enter highlighted key"
- ENDIF
- @enter_tline(txt$(i%))
- NEXT i%
- LOCATE 28,22
- PRINT "Very good! ";
- SPOKE &H484,BCLR(PEEK(&H484),0)
- FOR i%=0 TO 7
- @dosound(i%)
- PAUSE 100
- NEXT i%
- SPOKE &H484,BSET(PEEK(&H484),0)
- REPEAT
- UNTIL INKEY$<>""
- > PROCEDURE draw_typewriter
- BOX 5,150,100,191
- TEXT 10,160,row$(0)
- TEXT 12,170,row$(1)
- TEXT 14,180,row$(2)
- BOX 16,185,86,189
- RETURN
- > PROCEDURE show_letter(char$)
- LOCAL i%,j%
- char$=UPPER$(char$)
- i%=-1
- DO
- INC i%
- j%=INSTR(row$(i%),char$)
- LOOP UNTIL (i%>2) OR (j%>0)
- IF j%<>0
- TEXT 10+i%*2+(j%-1)*8,160+i%*10,char$
- ENDIF
- IF char$=" "
- BOX 16,185,86,189
- ENDIF
- RETURN
- > PROCEDURE enter_tline(txt$)
- LOCAL i%,j%,k$,m$
- FOR i%=1 TO LEN(txt$)
- k$=MID$(txt$,i%,1)
- DEFTEXT 2
- COLOR 2
- show_letter(k$)
- DO
- DO
- m$=INKEY$
- LOOP UNTIL m$<>""
- IF ASC(m$)=27
- END
- ENDIF
- LOOP UNTIL UPPER$(m$)=UPPER$(k$)
- out_char(k$)
- DEFTEXT 1
- COLOR 1
- show_letter(k$)
- NEXT i%
- PAUSE 10
- iy%=iy%+10
- ix%=10
- RETURN
- > PROCEDURE out_char(char$)
- DEFTEXT 1
- TEXT ix%,iy%,char$
- ix%=ix%+8
- IF ix%>310
- iy%=iy%+10
- ix%=10
- ENDIF
- RETURN
- > PROCEDURE dosound(num%)
- LOCAL i%
- ' SPOKE &H484,PEEK(&H484) AND NOT 1
- addr%=V:music_data&(index%(num%))
- ~XBIOS(32,L:addr%)
- RETURN
- > PROCEDURE read_music
- LOCAL i%,size%
- IF EXIST("typewrit.mus")
- OPEN "i",#1,"typewrit.mus"
- BGET #1,VARPTR(index%(0)),40
- size%=0
- i%=1
- REPEAT
- size%=MAX(size%,index%(i%))
- INC i%
- UNTIL index%(i%)=0
- size%=size%*2
- BGET #1,VARPTR(music_data&(0)),size%
- CLOSE #1
- nsongs%=i%-1
- ELSE
- LOCATE 1,10
- PRINT "TYPEWRIT.MUS file is missing"
- PAUSE 100
- END
- ENDIF
- RETURN
-