HOW-TO-MAKE-BIG-CHARACTERS -------------------------------------------------------------------------------------------------- TOOL: COMMODORE VIC-20 - BASIC 2 Language: BASIC Extra: - Author: Misel Zivanovic Note: (C) 26th DEC 2025 - www.lived.ch, mzretro.ch --------------------------------------------------------------------------------------------------- This is NOT my code. It is from COMPUTE! BOOK {The 1st one about VIC-20} The reason i am taking this as the first entry in this VIC-20 category, is to motivate myself to continue with exploring the Commodore VIC-20. It doesn't have more than 3.5KB free memory. My brain is cooking to see what can this limitation produce! I assume, it might be fun... Hmmm... after typing RUN and tossing the ENTER/RETURN, something happend, but i guess not what I was expecting {screenshot 2}. Well, the FOR NEXT LOOP is targeting 7184 and I have just 3583 and that probably isn't starting @ 7000 {unless the area is covered by these 3.5KB free RAM}! So the naked VIC-20 is not really equipped to mess with BIG CHARACTERS? Guess that's why it isn't so great, but still BIG! Luckily, no problem with the emulators {even though my goal was to use "NAKED" VIC-20! I guess, that idea is a history know! After adding more RAM: BLOCK 0 $0400 - $0FFF BLOCK 1 $2000 - $3FFF I hope this will work. What i find strange is that this example is targeting dec 7184 - 7600, hex $1C10 - 1DB0 which is clearly below the $2000, starting from dec 8192... Hmmm Let's run it again! WHAT??? It won't run at all with more MEMORY added!? I also tried MAX MEMORY and had no success! Which is actually GREAT, hahaha... I wanted to try the MORTAL VIC-20, and that's now possible! After small code correction it was OKAY, however, it is all shifted, meaning A is B, C is B etc. ...and, adding just 3KB more RAM was also okay, but not really helpful! **** cbm basic v2 **** 3583 bytes free ready. 10 poke 56,28 20 ch=32766 30 rem for x=7184 to 7560 step 2 35 for x=7182 to 7598 step 2 40 poke x,peek(ch):poke x+1,peek(ch) 50 ch=ch+1:next x 60 poke 36879,25 70 poke 36869,255 80 poke 36867,47 90 print "{CLR}abcdefghijklmnopqrstvwxyz" *************************************************************************************************** UPDATE: 29.12.2025 As i have learned few days later, the address range used in this example was just below the start of the SCREEN address area when NO memory expansion is used. As it looks, KERNAL of VIC-20 is using different locations for it as soon as more RAM is added starting from MEM BLOCK 1 = 1st 8KB BLOCK. That is why example wasn't working with more memory added {8KB}, but was working with added 3KB because that is in MEM BLOCK 0 and has no impact. Used area isn't relocated! More about in next lesson. ***************************************************************************************************