10 ' 20 PRINT 30 PRINT "Berechnung der Zeile und Spalte aus SOL 20 Videoadresse" 40 PRINT 50 ' 60 VID=&HCC00 ' Videospeicher beginnt hier 70 MAXROW=16 ' Maximale Anzahl Zeilen 80 MAXCOL=64 ' Maximale Anzahl Spalten 90 VIDTOP=VID+MAXCOL*MAXROW ' Videospeicher endet hier 100 ' 110 ' Wegen Ganzzahlbereich die Adressen anpassen 120 ' 130 IF VID<0 THEN VID=65536!+VID 140 IF VIDTOP<0 THEN VIDTOP=65536!+VIDTOP 150 ' 160 GOSUB 770 170 PRINT "[Leere Zeile beendet das Programm]" 180 PRINT 190 ' 200 ' Hauptschleife 210 ' ------------- 220 ' 230 GOSUB 360 240 RELAD=ADR-VID 250 R=RELAD \ MAXCOL 260 C=RELAD-MAXCOL*R 270 PRINT "Videoadresse ";HEX$(ADR);" -> Zeile ";R;", Spalte ";C 280 GOTO 230 290 ' 300 ' ------------- 310 ' 320 ' Eingabe der Videoadresse 330 ' 340 PRINT "Maximal vier Zeichen!" 350 ' 360 INPUT "Videoadresse: ";ADR$ 370 IF LEN(ADR$)=0 THEN END 380 IF LEN(ADR$)>4 THEN GOTO 340 390 FEHLER=0 400 ADR=0 410 ' 420 FOR I=1 TO LEN(ADR$) 430 : X$=MID$(ADR$,I,1) 440 : GOSUB 600 450 : ADR=16*ADR+X 460 NEXT I 470 ' 480 IF ADR<0 THEN ADR=65536!+ADR 490 IF ADR=VIDTOP THEN GOTO 560 510 IF FEHLER=0 THEN RETURN 520 ' 530 PRINT "Fehler in Eingabe >>";ADR$;"<<" 540 GOTO 360 550 ' 560 GOSUB 770:GOTO 360 570 ' 580 ' Zeichen in hexziffer wandeln 590 ' 600 X=ASC(X$) 610 ' 620 ' Bereich 0..9 630 ' 640 IF X>=48 AND X<=57 THEN X=X-48:RETURN 650 ' 660 ' Bereich A..F 670 ' 680 IF X>=65 AND X<=70 THEN X=X-65+10:RETURN 690 ' 700 ' Bereich a..f 710 ' 720 IF X>=97 AND X<=102 THEN X=X-97+10:RETURN 730 FEHLER=1:RETURN 740 ' 750 ' Bereich ausgeben 760 ' 770 PRINT "[Eingabe der Adresse von ";HEX$(VID);" bis ";HEX$(VIDTOP-1);"]":RETURN