TinyASM - an assembler for an unexpanded Commodore VIC20 It is brand new compared to a few others. 2024 is the number! --------------------------------------------------------------------------------------------------- {this part here bellow is not my text: it's a copy from the developer's site. Author: Henner Kessler} {I am searching for VIC-20 assemblers around the globe and this one dropped out of the blue} {So let's see what's going on here} TINYASM is an assembler for an unexpanded Commodore VIC20, which can be loaded directly from disk or tape without a module or memory expansion. The free area for your code is from: $18a7 to $1dff = 1368 bytes in the disk version $1973 to $1dff = 1164 bytes in the tape version. The whole project is separated to have as much free memory as possible for programming. That is why only the most essential comfort features are implemented. It is necessary to have seen the video to be able to fully operate the assembler: LINK to the YouTube VIDEO: https://www.youtube.com/watch?v=D-vyuzpaASA Here is a quick overview of all functions .D - delete line .I$0a - insert 10 Bytes (255 max) .J$1A00 - jump to address or .J$Mn label $Mn .L"NAME",8 - load program (.L"NAME",1 in tape version) .S"NAME",8 - save program (.S"NAME",1 in tape version) .B - switches between code and byte view .T"ABCD..." - insert text .$01$02$03... - enter bytes directly .Mn - (simple) memory labels - it's better to watch the video for this F1 - start your code Note: Only hexadecimal numbers are accepted by the assembler. Use lda #$0a instead of lda #10 enjoy! --------------------------------------------------------------------------------------------------- THIS IS NOW MY OPINION: When i saw an assembler editor which even doesn't need additional memory, i was very happy with a big smile on my old face. First I went to check the video and let me positively surprise. However, already there i started to think: what is that? Why so out of any logic? Video is showing BETA V1.0 and we have here TinyAsm Version 1.1 That made me think: it could only get better! Things were changed, adapted, modified which is good. Additional attached information in regard to Version 1.1 is just producing some noise. Latest version: {to load with load"*",8,1} --------------------------------------------------------------------------------------------------- DD tiny assembler DD CC by aitsch 2024 CC vers. 1.1 note: code adr. $18a7-$1dff color ram $9600-$97ff free zero page $01-$36 use hex numbers only f1 start your code instructions: .j$nnmm jump to addr. .$01$02... insert bytes .d delete code line .i$nn insert $nn bytes .t"abc" insert text .ma set memory label use: beq$ma .b switch code/bytes .l or .s"prog1",8 load/save"prog1",8 enter start address: $18a7 - sys6311 --------------------------------------------------------------------------------------------------- rom what can be seen in the video, manual address changes are involved when you have to adapt your code. That is something i actually don't wanna do. Temporary labels were a huge pain in the butt just from watching! On the other side, approximately 1300 bytes is more than enough to create something in assembly language, e.g. tinymon is just 800 bytes in size... What I also don't like from the video is the input complexity! Just to write this below here, it took me an hour because of this temporary memory labels. I got totally confused and disoriented! And at the end, this code still isn't running... I messed up, not even knowing that i did that. BEEP and WHITE BORDER flashing as a signal that something is wrong when you hit F1! What exactly, it isn't showing. Corrections are a nightmare, you cannot use SPACE, can move only with the cursor keys. Basically, you need to move to the very right with the cursor keys and then delete from left to right! {probably something one could get used to with the time} Dear Lord, i just cannot recommend this assembler, but in case anyone wants to torture himself as next, be welcome! {hehe} NOT RUNNING AFTER ALL THE STRUGGLE! 18ab 2 lda #$6a 18ad 3 sta $900f 18b0 2 ldx #$00 18b2 2 j lda #$04 18b4 3 sta $9600,y 18b7 1 inx 18b8 2 cpx #$42 18ba 2 bne $18b2 18bc 2 ldx #$00 18be 3 t lda $18cc,x 18c1 3 sta $1e00,y 18c4 1 inx 18c5 2 cpx #$16 18c7 2 ora #$f5 <<<< {No idea what has this lost here!!!} 18c9 2 bne $18be 18cb 1 rts 18cc 2 ora #$27 18ce 3 ora $1620 18d1 2 ora #$03 18d3 4 .$32$30$2c$14 18d7 1 php 18d8 2 ora $20 18da 4 .$23$0f$0e$05 18de 3 jsr $2121 18e1 2 and ($f0,x) 18e3 --------------------------------------------------------------------------------------------------- CONCLUSION: The potential of this assembler is unnecessary wasted on things that will at the end of the day eat your last nerve, instead of being of any help. - Extremely complicated temporary memory labels {you get lost easily and become disoriented} - SPACE key cannot be used {deletions are weird, no idea why it was made so} - manual corrections of the memory addresses {totally frustrated} - basically no compiler is involved {it means, you are a compiler and need to set all address changes right, manually!} {What I am saying, it needs a compiler and at least 3KB RAM support in RAM BLOCK 0! - I cannot even recall how have i placed those Y registers in my code as i was using just X-registers! {hmmm...} - it just doesn't feel right {like it's stealing the energy to actually use it!} {It is basically a Machine Language Monitor with a few {complicated} extras Beside from all the negative news, there is actually one major thing which is fantastic! That is the source code scrolling ability. I like that. It is too bad that the line isn't in the middle so you see the code down below and above! Maybe all improvement can be part of the version 1.2? As said, potential is there, it's just heavily wasted! {Including the support for 3KB RAM in BANK 0 to gain additional 3KB memory for the assembly code} {that should be a mandatory} --------------------------------------------------------------------------------------------------- updated: 28.05.2026