Documentatiedekking: 11 van 11 ingangen heeft echt broncommentaar (100,0%)
Commentaarregels: 26 van 67 (38,8%)
Aanroepstructuur
11 ingangen, 14 relaties. Van links naar rechts: aanroeper voor aangeroepene. Klik een blok om naar de documentatie te springen; beweeg erover om alleen de eigen relaties te zien. Sleep om te verschuiven, scrollwiel of de knoppen rechtsonder om te zoomen.
Dikke rand = geen aanroeper binnen bereikbare code (hoofdprogramma, of alleen aangeroepen vanuit dode code). Gestippelde rand = niet bereikbaar vanuit het hoofdprogramma. Oranje gestippelde pijl = terugkoppeling of recursie. Blauwe fijngestippelde pijl = registreert handler (ON INTERVAL/KEY/SPRITE/STRIG/STOP GOSUB, ON ERROR GOTO).
Soorten:hoofdprogrammasubroutineevent-handlerfoutafhandeling
Dikke rand = geen aanroeper binnen bereikbare code (hoofdprogramma, of alleen aangeroepen vanuit dode code). Gestippelde rand = niet bereikbaar vanuit het hoofdprogramma. Oranje gestippelde pijl = terugkoppeling of recursie. Blauwe fijngestippelde pijl = registreert handler (ON INTERVAL/KEY/SPRITE/STRIG/STOP GOSUB, ON ERROR GOTO).
Soorten:hoofdprogrammasubroutineevent-handlerfoutafhandeling
Als boomstructuur
10Hoofdprogramma1000Init2000Beweeg omhoog2100Beweeg rechts2200Beweeg omlaag2300Beweeg links3000Einde- registreert
5000Tik - registreert
6000Vuur - registreert
9000Fout
Mogelijk ongebruikte code
In MSX-BASIC zijn sprongdoelen altijd vaste regelnummers, dus de analyse is binnen het programma volledig.
Niet gezien worden: binnenkomst via
Niet gezien worden: binnenkomst via
RUN regel of GOTO in direct mode, via een ander programma (RUN "X",R, MERGE) of via machinetaal. Controleer dat voordat je iets weggooit.Onbereikbare regels
| Regels | Code-regels | Begint met |
|---|---|---|
| 6040–6050 | 2 | PRINT "Deze regel wordt nooit bereikt" |
Waarschuwingen
- Regel 6050: GOTO verwijst naar niet-bestaande regel 7777 →
- Regels 2400-2410 horen bij meerdere routines: 2000, 2100, 2200, 2300 →
- Regels 6040-6050 zijn onbereikbaar →
- PUNTEN, PUNT zijn in MSX-BASIC dezelfde variabele (alleen de eerste 2 tekens tellen) →
Programma Ruimtejager
JAGER.BAS
demoprogramma voor msxbasicdoc
Klein spelletje om subroutines, events en
foutafhandeling te laten zien.
| Tag | Waarde |
|---|---|
@auteur | Marcel |
@versie | 0.1 |
10 · Hoofdprogrammahoofdprogramma
Begin van het programma en alles wat daar zonder GOSUB uit volgt.
Roept aan
1000 Init, 2000 Beweeg omhoog, 2100 Beweeg rechts, 2200 Beweeg omlaag, 2300 Beweeg links, 3000 EindeEindigt via
END/STOP 310| Variabele | Type | Gebruik |
|---|---|---|
S | integer | schrijft, leest |
PUNTEN, PUNT | integer | leest |
A$ | string | leest |
1000 · Initsubroutine
zet het speelveld klaar
| Tag | Waarde |
|---|---|
@uit | X,Y startpositie; PUNTEN=0 |
Roept aan
4000 TekenAangeroepen door regel 100 (Hoofdprogramma)
Eindigt via
RETURN 1050| Variabele | Type | Gebruik |
|---|---|---|
PUNTEN, PUNT | integer | schrijft |
X | integer | schrijft |
Y | integer | schrijft |
LEVEN | integer | schrijft |
I | integer | schrijft, leest |
D | integer | schrijft, leest |
2000 · Beweeg omhoogsubroutine
Roept aan
4000 TekenAangeroepen door regel 150 (Hoofdprogramma)
Eindigt via
RETURN 2410| Variabele | Type | Gebruik |
|---|---|---|
Y | integer | schrijft, leest |
2100 · Beweeg rechtssubroutine
Roept aan
4000 TekenAangeroepen door regel 150 (Hoofdprogramma)
Eindigt via
RETURN 2410| Variabele | Type | Gebruik |
|---|---|---|
X | integer | schrijft, leest |
2200 · Beweeg omlaagsubroutine
Roept aan
4000 TekenAangeroepen door regel 150 (Hoofdprogramma)
Eindigt via
RETURN 2410| Variabele | Type | Gebruik |
|---|---|---|
Y | integer | schrijft, leest |
2300 · Beweeg linkssubroutine
Roept aan
4000 TekenAangeroepen door regel 150 (Hoofdprogramma)
Eindigt via
RETURN 2410| Variabele | Type | Gebruik |
|---|---|---|
X | integer | schrijft, leest |
3000 · Eindesubroutine
toon score en vraag om opnieuw
Aangeroepen door regel 300 (Hoofdprogramma)
Eindigt via
RETURN 3030| Variabele | Type | Gebruik |
|---|---|---|
PUNTEN, PUNT | integer | leest |
A$ | string | schrijft |
4000 · Tekensubroutine
speler op X,Y zetten
Aangeroepen door regel 1040 (Init), 2410 (Beweeg omhoog, Beweeg rechts, Beweeg omlaag, Beweeg links)
Eindigt via
RETURN 4020| Variabele | Type | Gebruik |
|---|---|---|
X | integer | leest |
Y | integer | leest |
5000 · Tikevent: ON INTERVAL
interval-handler, telt punten
Geregistreerd in regel 110 (Hoofdprogramma)
Eindigt via
RETURN 5030| Variabele | Type | Gebruik |
|---|---|---|
PUNTEN, PUNT | integer | schrijft, leest |
6000 · Vuurevent: ON STRIG
spatiebalk ingedrukt
Geregistreerd in regel 120 (Hoofdprogramma)
Eindigt via
RETURN 6030| Variabele | Type | Gebruik |
|---|---|---|
PUNTEN, PUNT | integer | schrijft, leest |
E | integer | schrijft, leest |
9000 · FoutON ERROR
foutafhandeling
Geregistreerd in regel 80 (Hoofdprogramma)
Eindigt via
RESUME 140 9030Variabelen
MSX-BASIC onderscheidt variabelen alleen op de eerste twee tekens en het type. Zonder suffix of DEFxxx is het type double.
| Naam | Type | Geschreven / DIM | Gelezen |
|---|---|---|---|
A$ | string | 3020 | 310 |
D | integer | 1030 | 1030 |
E | integer | 6020 | 6020 |
I | integer | 1030 | 1030 |
LEVEN | integer | 1020 | nooit |
PUNTEN, PUNT | integer | 1020, 5010, 6020 | 160, 3010, 5010, 5020, 6020 |
S | integer | 140 | 140, 150 |
X | integer | 1020, 2110, 2310 | 2110, 2310, 4010 |
Y | integer | 1020, 2010, 2210 | 2010, 2210, 4010 |
Functies, DATA en externe verwijzingen
DEF FN
| Functie | Gedefinieerd | Gebruikt in |
|---|---|---|
FNR | 90 | 6020 |
DATA
DATA-regels 8000
Externe verwijzingen
| Soort | Naam | Regels |
|---|---|---|
| CALL | TURBO | 6010 |
Broncode
onbereikbaargedeeld door meerdere routinesLinkerkolom: routines waartoe de regel hoort (H = hoofdprogramma). Sprongdoelen zijn klikbaar.
| H | 10 | '## Ruimtejager - demoprogramma voor msxbasicdoc |
| H | 20 | ' Klein spelletje om subroutines, events en |
| H | 30 | ' foutafhandeling te laten zien. |
| H | 40 | '@auteur Marcel |
| H | 50 | '@versie 0.1 |
| H | 60 | DEFINT A-Z |
| H | 70 | SCREEN 1:COLOR 15,1,1:KEY OFF |
| H | 80 | ON ERROR GOTO 9000 |
| H | 90 | DEF FNR(X)=INT(RND(-TIME)*X)+1 |
| H | 100 | GOSUB 1000 |
| H | 110 | ON INTERVAL=50 GOSUB 5000:INTERVAL ON |
| H | 120 | ON STRIG GOSUB 6000:STRIG(0) ON |
| H | 130 | '--- hoofdlus --- |
| H | 140 | S=STICK(0):IF S=0 THEN 140 |
| H | 150 | ON S GOSUB 2000,2000,2100,2100,2200,2200,2300,2300 |
| H | 160 | IF PUNTEN>=100 THEN 300 ELSE 140 |
| H | 300 | GOSUB 3000 |
| H | 310 | IF A$="J" THEN RUN ELSE END |
| 990 | ' | |
| 1000 | 1000 | '## Init - zet het speelveld klaar |
| 1000 | 1010 | '@uit X,Y startpositie; PUNTEN=0 |
| 1000 | 1020 | CLS:X=15:Y=10:PUNTEN=0:LEVEN=3 |
| 1000 | 1030 | RESTORE 8000:FOR I=0 TO 7:READ D:VPOKE BASE(7)+I,D:NEXT I |
| 1000 | 1040 | GOSUB 4000 |
| 1000 | 1050 | RETURN |
| 1990 | ' | |
| 2000 | 2000 | ' Beweeg omhoog |
| 2000 | 2010 | IF Y>0 THEN Y=Y-1 |
| 2000 | 2020 | GOTO 2400 |
| 2100 | 2100 | ' Beweeg rechts |
| 2100 | 2110 | IF X<31 THEN X=X+1 |
| 2100 | 2120 | GOTO 2400 |
| 2200 | 2200 | ' Beweeg omlaag |
| 2200 | 2210 | IF Y<22 THEN Y=Y+1 |
| 2200 | 2220 | GOTO 2400 |
| 2300 | 2300 | ' Beweeg links |
| 2300 | 2310 | IF X>0 THEN X=X-1 |
| 2000 2100 2200 2300 | 2400 | ' gezamenlijk: speler opnieuw tekenen |
| 2000 2100 2200 2300 | 2410 | GOSUB 4000:RETURN |
| 2990 | ' | |
| 3000 | 3000 | '## Einde - toon score en vraag om opnieuw |
| 3000 | 3010 | LOCATE 5,10:PRINT "Score:";PUNT |
| 3000 | 3020 | LOCATE 5,12:INPUT "Nog een keer (J/N)";A$ |
| 3000 | 3030 | RETURN |
| 3990 | ' | |
| 4000 | 4000 | '## Teken - speler op X,Y zetten |
| 4000 | 4010 | LOCATE X,Y:PRINT CHR$(128); |
| 4000 | 4020 | RETURN |
| 4990 | ' | |
| 5000 | 5000 | '## Tik - interval-handler, telt punten |
| 5000 | 5010 | PUNTEN=PUNTEN+1 |
| 5000 | 5020 | IF PUNTEN MOD 10=0 THEN BEEP |
| 5000 | 5030 | RETURN |
| 5990 | ' | |
| 6000 | 6000 | '## Vuur - spatiebalk ingedrukt |
| 6000 | 6010 | _TURBO ON |
| 6000 | 6020 | E=FNR(6):PUNTEN=PUNTEN+E |
| 6000 | 6030 | RETURN |
| 6040 | PRINT "Deze regel wordt nooit bereikt" | |
| 6050 | GOTO 7777 | |
| 6990 | ' | |
| 8000 | DATA 24,60,126,219,255,36,90,165 | |
| 8990 | ' | |
| 9000 | 9000 | '## Fout - foutafhandeling |
| 9000 | 9010 | PRINT "Fout";ERR;"in regel";ERL |
| 9000 | 9020 | IF ERR=5 THEN RESUME NEXT |
| 9000 | 9030 | RESUME 140 |