• Bit 64

  • by jwhoag

Commodore-related project and thoughts I have worked on


No Way! Make Way for C64List 3.50

Some cool new toys in C64List are available. Is it Christmas already?


If you have been holding your breath for the next C64List release, then you should really consider a career in diving. And now please take a nice deep breath of fresh air. C64List 3.50 is here!

Before you all start asking at once--yes I’m still (slowly) working on the 4.00 release line as well, but almost exclusively on the assembler. More on that later. But for now let’s all toast the champion of today and get gossiping.

Only a few inner-circle C64List super-secret society members (whose anonymous aliases will go unnamed for personal security purposes), some random recent hitchhikers on the portion of Highway 375 which traverses Area 51, two shorthaired cats, and Joe--know that the remote scientific monitoring instrumentation deployed around C64List headquarters has recorded intermittent bursts of activity during the past few years. However, over the past 96 hours, these devices have identified dramatically increased levels of keyboard usage around the C64List code base. We feel it is now time to share this news with the world.

Since the last C64List blog was posted, a number of enhancements have made their way into C64List. Let me enumerate.

  • For emulator enthusiasts, C64List can read and write program files directly into D64 files
    • D64Name::”C64 FILENAME” as source file to load a prg file
    • –d64:D64Name::”NEW C64 FILENAME” to save to a .d64 file
    • D64file name is not case sensitive
    • C64 filename is case sensitive, usually you will need to use UPPERCASE
    • You will need to use quotes around the C64 filename if there are spaces in the name
  • Long variable names are supported (“Supervariables”)
    • {var:LongName=sn} to assign long names to short names
    • {var:LongName} to use in code
  • Parser variables can be defined at the command line
    • Use the –def: command line option
    • Multiple –def options are allowed
    • Parser variables are case insensitive
  • Loading .bas files are treated the same as .txt and .lbl files
  • The files formerly output as .asm are now output as .lst files
    • Since this is more accurate for the disassembly they contain
    • Also helps prevent source code (.asm files) from being overwritten
  • Additional cursor codes for changing, locking and unlocking character set changes
    • {switchdis}
    • {switchena}
    • {lower}
    • {upper}
  • {delete} was removed for the more properly named {backspace}
  • Alpha conversion support has been revamped and should work much better
  • New {alpha} directive options were added and/or improved
    • {alpha:off} –no conversion
    • {alpha:normal} –(default) Same as {alpha:lazy}
    • {alpha:lazy} –all letters àstandard UPPERCASE PETSCII
    • {alpha:alt} –all upper/lower case letters à corrected for Alternate PETSCII
    • {alpha:poke} –letters converted to screen poke codes (standard)
    • {alpha:pokealt} –letters converted to Alternate screen poke codes
    • {alpha:upper}—letters are all converted to Alternate UPPERCASE PETSCII
    • {alpha:lower}—letters are all converted to Alternate lowercase PETSCII
    • {alpha:invert}—(previously defined function, no longer recommended)
    • Note: Alternate UPPERCASE is now corrected to use codes starting at $C1
    • REM statements are also alpha converted (but $61 UPPERCASE block is used to prevent detokenization)
  • New –alpha command line options were added or improved
    • –alpha:off – no conversion
    • –alpha:normal –(default) Same as –alpha:upper
    • –alpha:upper –PETSCII is all converted to UPPERCASE ASCII
    • –alpha:lower –PETSCII is all converted to lowercase ASCII
    • –alpha:alt –PETSCII case is corrected to upper/lowercase ASCII
    • –alpha:invert—(previously defined function, no longer recommended)
  • More flexibility in where you can place {:Labels}
    • Previously references to {:Label}s had to be syntactically correct
    • Now you can do funny things like PRINT {:Label}


Back on the topic of version 4.00, it is being developed in parallel with the 3.xx version line. Once the new 4.00 version is released, I will retire 3.xx, but for the time being it is still alive and well.

I will soon be posting about casm, which is the assembler part of C64List 4.00. Casm is currently a working standalone assembler (no BASIC support), but I’m going to release it that way first. Eventually I will release a full-featured C64List 4.00 when it is all integrated again.

Here’s a link to get a sneak peek of the shiny new C64List 3.5, as well as a polished up User’s Gude: https://drive.google.com/open?id=1mYUu1iQSPL7C9SWe2wpMJYpY_fH0wQiQ



Hello friends!


If you have been holding your breath for the next C64List release, then you should really consider a career in diving. And now please take a nice deep breath of fresh air.

Leave a Comment

You must be signed-in to post comments.


wizardnj 8/6/2018

Nice can't wait to try this new version :)

C64List 8/15/2018

Hi WNJ, FYI, there's a slightly newer 3.51 which fixes a 3.50 bug related to parsing tab characters in the source. So you might want to make sure you get 3.51. You can always get the latest C64List version from the C64List Facebook page if it hasn't been posted on CommodoreServer yet.

mikeham 10/14/2018


Many thanks for C64List - great work!

However, I think there may be a bug found in the last line of BLACKJACK.BAS from the earliest Commodore programs.

C64List chokes on:



Error: Unknown directive found inside quotes in line '63999 END:REM "END OF BLACKJACK PROPERTY OF COMMODORE{delete:21}'

Thanks again for C64List.

jwhoag 10/15/2018

Hi Mikeham,

Glad you are enjoying C64List :). I'm guessing you converted this from .prg to .txt in a previous version of C64List and now want to convert it back. In 3.50, I renamed the {delete} screen code to {backspace} because that is more consistent with Commodore lingo. The release notes indicate this change, but it's an easy thing to overlook. Sorry for the inconvenience!

You should be back in business if you simply change {delete:21} to {backspace:21}

I eventually plan to make C64List a little smarter in understanding some variations like this. Currently there is a 1:1 correspondence between a screen code and its C64List name. I plan to make it 1:n, but it also has to reconcile with the quoter feature, and there are a couple other things to work through before it can work that way.

mikeham 10/16/2018

Hi Jeff,

Thanks for the fast reply.

Mea culpa: your guess was of course completely correct. I had updated C64List and was trawling through files generated with a much earlier version.

Shame on me for not picking up the change from {delete} to {backspace}, which is indeed documented in the notes for version 3.10 (unreleased) thus:

-cursor code {delete} changed to {backspace} to be more C64 correct

I didn't even stop to consider what line 63999 was actually doing - it's obviously a lame attempt to hide the REM statement. Memories came back from the late 1970s of typing LIST and seeing a brief flash of "hidden" text on my PET 2001 with the awful chiclet keyboard.

Thanks for your time,