100 GOSUB 1000: REM Hangok paraméterei 110 GOSUB 2000: REM Hol a kártya 120 GOSUB 3000: REM Minden csatorna csend! 130 GOSUB 4000: REM C-D-E 150 GOSUB 3000: REM Kilépéshez csend! 160 END 1000 REM *** C-D-E hangok *** 1010 C=262*8/7:D=294*8/7:E=330*8/7 : REM Frekvenciák, Hz-ben *8/7 a magasabb órajel miatt 1020 CN=INT(3579545/(32*C) + 0.5): REM 10bites számok 1030 DN=INT(3579545/(32*D) + 0.5): REM érték-helyesen 1040 EN=INT(3579545/(32*E) + 0.5): REM kerekítve 1050 CNF=INT(CN/16): REM Felső 6 bit - C 1060 CNA=CN-CNF*16: REM Alsó 4 bit - C 1070 DNF=INT(DN/16): REM Felső 6 bit - D 1080 DNA=DN-DNF*16: REM Alsó 4 bit - D 1090 ENF=INT(EN/16): REM Felső 6 bit - E 1100 ENA=EN-ENF*16: REM Alsó 4 bit - E 1110 RETURN 2000 REM *** Hol a kártya *** 2010 BA=4*16:BP=16:ID$="JOY+SN" 2020 IF peek(BA)<>6 THEN GOTO 2080: REM nem itt van 2030 LET I=1 2040 IF ORD(ID$(i))<>PEEK(BA+I) THEN GOTO 2080: REM nem itt van 2050 I=I+1 2060 IF I>5 THEN GOTO 2100: REM Megtaláltuk! 2070 GOTO 2040 2080 BA=BA+48:BP=BP+16 2090 IF BA>255 THEN GOTO 2200: ELSE GOTO 2020 2100 PRINT "A kártya alap portja:";BP 2105 OUT 15+BP,8: REM SN chip órajel bekapcs 2110 RETURN 2200 PRINT "Sajnos nem találtam meg a kártyát, kilépek..." 2210 END 3000 REM *** Csatornák némítása *** 3010 FOR I=0 TO 3 3020 OUT BP,128+(i*32)+16+15 3030 NEXT I 3040 RETURN 4000 REM *** C D és E hangok lejátszása, késleltetve 4010 REM Első csatorna C hang 4010 OUT BP,128+CNA 4020 OUT BP,CNF 4030 REM Második csatorna D hang 4040 OUT BP,128+32+DNA 4050 OUT BP,DNF 4060 REM Harmadik csatorna E hang 4070 OUT BP,128+64+ENA 4080 OUT BP,ENF 4090 REM Leütések... 4100 OUT BP,128+16+0 4110 GOSUB 4500 4120 OUT BP,128+16+2:OUT BP,128+32+16+0 4130 GOSUB 4500 4140 OUT BP,128+16+4:OUT BP,128+32+16+2:OUT BP,128+64+16+0 4150 GOSUB 4500 4160 OUT BP,128+32+16+4:OUT BP,128+64+16+2 4170 GOSUB 4500 4180 OUT BP,128+64+16+4 4190 GOSUB 4500:GOSUB 4500:GOSUB 4500 4200 RETURN 4500 FOR W=0 to 200:NEXT:RETURN:REM Várunk kicsit...