Subj : Re: list running prog c64 basic v2 To : All From : Tilmann Hentze Date : Tue Feb 10 2026 09:00 pm Grant Weasner schrieb: > If I had just put: > 10 list > 20 goto 10 > it wouldn't work because list executes something like a run-stop first. This works silmilarily as your program for me: The programm lists itself and then stops. I wonder why. I tested this with vice and yapesdl. I'll try to comment your program: Lines 5 to 9 copies the BASIC keywords to k$() array. 5 print "initializing...": dim k$(255): rp=41111 6 for t=124 to 255: w$="": rem --- fill the cache --- 7 b=peek(rp): w$=w$+chr$(b and 127): rp=rp+1 8 if b<128 goto 7 9 k$(t)=w$+" ": if rp < 41581 then next t The BASIC program starts at 2049, this is the addres of the first line; clear the screen 10 ad = 2049: print chr$(147) The next BASIC line number is at this address 20 nx = peek(ad) + 256 * peek(ad+1) This is the end of the program 30 if nx = 0 then end Get the BASIC program line number and print it 40 ln = peek(ad+2) + 256 * peek(ad+3) 50 print ln; " "; Loop from line's start of text to end of line 60 for i = ad + 4 to nx - 2 Get a byte. If its value less than 128 then it is a character, print it 70 c = peek(i): if c < 128 then print chr$(c);: goto 100 It is a BASIC token, lookup in keywords table and print it. 80 print k$(c); Loop end; print an empty line; next BASIC line address; restart loop 100 next i: print: ad = nx: goto 20 Best regards, Tilmann. -- Wo sich noch Bit und Byte gute Nacht sagen. --- PyGate Linux v1.5.11 * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10) .