SCREEN 12
ssz = 50: vsz = 8
tah = 20: tih = 12
vszin = 1: hszin = 10: szszin = 9

LOCATE 1, 1: PRINT "1:u   1/2:o   1/4:a   1/8:e   1/16:i"

DIM hang(10, 100)
DIM hossz(10, 100)
DIM skala(-10 TO 10)

FOR sor = 1 TO 9
FOR vonal = 1 TO 5
iksz = sor * ssz - vonal * vsz
LINE (1, iksz)-(600, iksz), vszin
NEXT vonal
NEXT sor

sor = 1: x = 1: y = 1
sore = sor: xe = x: ye = y
xveg = 73: utsosor = 9

x1 = 18
y1 = ssz - vsz / 2 - 7
FOR i = -2 TO 2
FOR j = -2 TO 2
PSET (x1 + i, y1 + j), 15 - POINT(x1 + i, y1 + j)
NEXT j
NEXT i


halad:
aa: a$ = INKEY$
IF a$ = "" THEN GOTO aa
mi = ASC(a$)

SELECT CASE mi

CASE IS = 9 'nagyugras
IF x < xveg - 8 THEN xe = x: x = x + 8
GOTO egyutt

CASE IS = 57 'sorfel
IF sor > 1 THEN sore = sor: sor = sor - 1
GOTO egyutt

CASE IS = 51 'sorle
IF sor < utsosor THEN sore = sor: sor = sor + 1
GOTO egyutt

CASE IS = 49 'sorvege
xe = x: x = xveg
GOTO egyutt

CASE IS = 55 'soreleje
xe = x: x = 1
GOTO egyutt

CASE IS = 56 'fel
ye = y
IF y < 8 THEN y = y + 1 ELSE GOTO halad
GOTO egyutt

CASE IS = 52 'bal
xe = x
IF x > 1 THEN x = x - 1 ELSE GOTO halad
GOTO egyutt

CASE IS = 54 'jobb
xe = x
IF x < 73 THEN x = x + 1 ELSE GOTO halad
GOTO egyutt

CASE IS = 50 'le
ye = y
IF y > -2 THEN y = y - 1 ELSE GOTO halad
GOTO egyutt

'**************** H A N G O K ******************

CASE IS = 117 'egesz
hang(sor, x) = y
hossz(sor, x) = 1
CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin
'ss = sor: xx = x: yy = y: GOSUB atrajzol
GOTO egyutt

CASE IS = 111 'fel
hang(sor, x) = skala(y)
hossz(sor, x) = .5
CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin
IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin
IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin
'ss = sor: xx = x: yy = y: GOSUB atrajzol
GOTO egyutt

CASE IS = 97 'negyed
hang(sor, x) = skala(y)
hossz(sor, x) = .25
CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin
PAINT (10 + x * 8, sor * ssz - y * vsz / 2 - 7), hszin, hszin
IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin
IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin
ss = sor: xx = x: yy = y: GOSUB atrajzol
GOTO egyutt

CASE IS = 101 'nyolcad
hang(sor, x) = skala(y)
hossz(sor, x) = .125
CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin
PAINT (10 + x * 8, sor * ssz - y * vsz / 2 - 7), hszin, hszin
IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin
IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah)-(6 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 + tah - tih / 2), hszin
IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin
IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah)-(14 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 - tah + tih / 2), hszin
ss = sor: xx = x: yy = y: GOSUB atrajzol
GOTO egyutt

CASE IS = 105 'tizenhatod
hang(sor, x) = skala(y)
hossz(sor, x) = .0625
CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin
PAINT (10 + x * 8, sor * ssz - y * vsz / 2 - 7), hszin, hszin

IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin
IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah)-(6 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 + tah - tih / 2), hszin
IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7 - vsz / 2 + tah)-(6 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - vsz / 2 - 7 + tah - tih / 2), hszin

IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin
IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah)-(14 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 - tah + tih / 2), hszin
IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7 + vsz / 2 - tah)-(14 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 + vsz / 2 - 7 - tah + tih / 2), hszin
ss = sor: xx = x: yy = y: GOSUB atrajzol
GOTO egyutt

' **************** S Z U N E T E K ***************

CASE IS = 84 ' ures egesz
hang(sor, x) = 0
hossz(sor, x) = 1
GOTO egyutt

CASE IS = 79 ' ures fel
hang(sor, x) = 0
hossz(sor, x) = .5
GOTO egyutt

CASE IS = 65 ' ures negyed
hang(sor, x) = 0
hossz(sor, x) = .25
GOTO egyutt

CASE IS = 69 ' ures nyolcad
hang(sor, x) = 0
hossz(sor, x) = .125
GOTO egyutt

CASE IS = 73 ' ures tizenhatod
hang(sor, x) = 0
hossz(sor, x) = .0625
GOTO egyutt



END SELECT
GOTO halad




egyutt:
ss = sore: xx = xe: yy = ye: GOSUB atrajzol

'iksz = 5 + xe * 8
'ipsz = sore * ssz - vsz * (INT(ye / 2) + 1)
'IF ye >= 0 THEN LINE (iksz, ipsz)-(iksz + 10, ipsz), vszin

sore = sor: xe = x: ye = y
ss = sor: xx = x: yy = y: GOSUB atrajzol
GOTO halad

atrajzol:
x1 = 10 + xx * 8
y1 = ss * ssz - yy * vsz / 2 - 7
FOR i = -2 TO 2
FOR j = -2 TO 2
PSET (x1 + i, y1 + j), 15 - POINT(x1 + i, y1 + j)
NEXT j
NEXT i
RETURN

